Python进程通信之匿名管道实例讲解
匿名管道
管道是一个单向通道,有点类似共享内存缓存.管道有两端,包括输入端和输出端.对于一个进程的而言,它只能看到管道一端,即要么是输入端要么是输出端.
os.pipe()返回2个文件描述符(r,w),表示可读的和可写的.示例代码如下:
#!/usr/bin/python importtime importos
defchild(wpipe): print('hellofromchild',os.getpid()) whileTrue: msg='howareyou\n'.encode() os.write(wpipe,msg) time.sleep(1)
defparent(): rpipe,wpipe=os.pipe() pid=os.fork() ifpid==0: child(wpipe) assertFalse,'forkchildprocesserror!' else: os.close(wpipe) print('hellofromparent',os.getpid(),pid) fobj=os.fdopen(rpipe,'r') whileTrue: recv=os.read(rpipe,32) printrecv
parent()