管道:是一种半双工的通信机制,它一端用来读,另外一端用来写;管道只能用来在具有公共祖先的两个进程之间通信(父进程和子进程或者同一父进程的两个子进程);管道通信消息遵循先进先出的原理,并且数据只能被读取一次,当此段数据被读取后就会清空。管道实质是内存页(page)。
相关函数:os.pipe();它返回读写通道文件描述符组成的元组(read_end,write_end)。
无名管道示例:
import os
pi = os.pipe() #创建管道:(fd_read,fd_write)
pid = os.fork()
if (pid == 0): #子进程继承父进程的资源,给父进程发送消息。
os.write(pi[1], “hello world”)
else:
msg = os.read(pi[0], 1024) #父进程读取子进程发送消息。
print msg
子进程只负责读取,父进程只负责写:
import os
p = os.pipe()
pid = os.fork()
if(pid == 0):
os.close(p[1])
while True:
msg = os.read(p[0],1024)
print msg
if(msg == “q”):
break
else:
os.close(p[0])
while True:
str1 = raw_input()
os.write(p[1],str1)
if(str1 == ‘q’):
os.wait()
os.close(p[1])
break
时间: 2024-10-07 16:53:54