文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 对信号 处理的 测试

2023-01-31 07:33

关注

 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() 

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯