python 对信号 处理的 测试

发布时间:2019-09-22 07:47:28编辑:auto阅读(1597)

     python 对信号 处理的测试

    小结下:

    每次信号 会将当前执行的函数挂起,进入 信号处理函数

    如果信号处理函数还在处理,又来信号,当前函数仍然被挂起

    执行完毕回到刚才挂起点继续执行

    从下面输出 我们就可以看出来


    1. ^Cget an signal: 2 9
       
    2. ^Cget an signal: 2 10 
    3. ^Cget an signal: 2 11 
    4. ^Cget an signal: 2 12 
    5. ec 12 t: 12 
    6. ec 12 t: 11 
    7. ec 12 t: 10 
    8. ec 12 t: 9 

     

    1. #coding:utf-8 
    2. ''''' 
    3. python 对linux 中断机制的测试 
    4. 输出: 按ctrl+c 效果 
    5. python test_sig.py 
    6. . 0 
    7. . 0 . 1 
    8. . 1 . 2 
    9. . 2 . 3 
    10. . 3 . 4 
    11. . 4 . 5 
    12. . 5 . 6 
    13. . 6 . 7 
    14. . 7 . 8 
    15. . 8 . 9 
    16. . 9 . 10 
    17. . 10 . 11 
    18. . 11 . 12 
    19. . 12 . 13 
    20. . 13 . 14 
    21. . 14 . 15 
    22. . 15 . 16 
    23. . 16 . 17 
    24. . 17 . 18 
    25. . 18 . 19 
    26. . 19 . 20 
    27. . 20 . 21 
    28. . 21 . 22 
    29. . 22 . 23 
    30. . 23 . 24 
    31. . 24 . 25 
    32. . 25 . 26 
    33. ^Cget an signal: 2 1 
    34. ^Cget an signal: 2 2 
    35. ^Cget an signal: 2 3 
    36. ^Cget an signal: 2 4 
    37. ^Cget an signal: 2 5 
    38. ^Cget an signal: 2 6 
    39. ^Cget an signal: 2 7 
    40. ^Cget an signal: 2 8 
    41. ^Cget an signal: 2 9 
    42. ^Cget an signal: 2 10 
    43. ^Cget an signal: 2 11 
    44. ^Cget an signal: 2 12 
    45. ec 12 t: 12 
    46. ec 12 t: 11 
    47. ec 12 t: 10 
    48. ec 12 t: 9 
    49. ec 12 t: 8 
    50. ec 12 t: 7 
    51. ec 12 t: 6 
    52. ec 12 t: 5 
    53. ec 12 t: 4 
    54. ec 12 t: 3 
    55. ec 12 t: 2 
    56. ec 12 t: 1 
    57. . 26 . 27 
    58.  
    59. main 
    60.  
    61. ''' 
    62. import sys 
    63. import signal 
    64. e={'flag':0,'c':0
    65.  
    66. def handler(signum, frame): 
    67.     e['c']+=1#计数器 
    68.     print "get an signal:", signum,e['c'
    69.     import time 
    70.     t=e['c'
    71.     time.sleep(2
    72.     print 'ec', e['c'],'t:',t 
    73.     e['flag']=1 
    74.  
    75.  
    76. #开关 
    77. signal.signal(signal.SIGINT, handler) 
    78. signal.signal(signal.SIGTERM, handler) 
    79. signal.signal(3, handler) 
    80.  
    81. def main(): 
    82.     while 1
    83.         if e['flag']:break
    84.         for k in range(100): 
    85.             print '.',k 
    86.             if e['flag']:break
    87.             for i in range(100000): 
    88.                 if e['flag']:break
    89.                 s=i*i 
    90.             print '.',k, 
    91.             sys.stdout.flush() 
    92.  
    93.         print 
    94.     print 'main' 
    95.  
    96.  
    97. main() 

     

关键字