python fork子进程(二)
来源:互联网 发布:我的淘宝等级怎么看 编辑:程序博客网 时间:2024/04/29 20:12
父进程在wait子进程时,可能会发生失败,一种情况是被系统信号打断,一种是wait的pid不存在。上一篇里,waitpid采用的是非阻塞的,因此不会发生被系统信号打断的情况,下面给出一个例子,演示如果处理被系统打断的情况
#coding=utf-8import osimport timeimport signalimport errnodef child_work(): while True: print 'I am child {name}'.format(name=os.getpid()) time.sleep(3)def signal_sigint(a,b): print 'my pid is {pid},you press contol +c ,but I will not exit,hehe'.format(pid =os.getpid())def main(): pid = os.fork() if pid == 0: signal.signal(signal.SIGINT,signal_sigint) child_work() else: signal.signal(signal.SIGINT,signal_sigint) while True: try: p,status = os.waitpid(pid,os.WUNTRACED|os.WCONTINUED) except OSError as e: if errno.EINTR == e.errno: print u'wait 被系统信号中断' continue elif errno.ECHILD == e.errno: print u'没有什么可监听的' break else: print u'发生异常退出' breakif __name__ == '__main__': main()程序运行后,control+c,平时这个命令都会将程序杀死,但是由于我们在进程中监听了这个信号,并做了处理,因此,父子进程都不会退出,但是这个信号会打断waitpid这个函数。
如果wait的pid并不存在,就会引发 ECHILD这个错误,将第24行替换为
p,status = os.waitpid(45342,os.WUNTRACED|os.WCONTINUED)现在,运行程序,就会发生ECHILD错误。
0 0
- python fork子进程(二)
- python fork子进程(一)
- Python 进程,子进程( os.fork() )
- Python中os.fork()产生子进程
- Python 使用 os.fork() 创建子进程
- linux子进程fork
- fork子进程缓冲
- fork创建子进程
- fork()生成子进程
- fork创建子进程
- fork创建子进程
- fork()创建子进程
- linux实验二---fork()的用法,产生子进程
- python中fork()函数生成子进程分析
- Linux基础(二)fork()进程
- <二>、进程-fork
- python中进程创建—fork()
- 进程的创建-fork(python版)
- 硬盘的存储原理和内部架构
- oracle 11g下exp direct=y的陷阱
- 解决终端服务器超过了最大允许连接的问题
- 【Spring】——事务的管理及实现
- FireBreath环境配置(windows)
- python fork子进程(二)
- Android图片压缩上传系列-基础篇
- 如何在eclipse中查看SHA1的码
- poj3181(高精度完全背包dp)
- 关于php使用基于socket Web消息推送系统
- 汇编(一)汇编语言简介
- 转载 Souces for android api 24 platform not found
- C. XOR Equation
- ios数据存储之--模型对象归档(NSKeyedArchiver、NSKeyedUnarchiver)