利用匿名管道实现父子进程间的通信,子进程对父进程说hello
时间: 2024-12-23 12:19:13 浏览: 72
在Unix/Linux系统中,匿名管道(亦称无名管道)是一种特殊类型的文件描述符,可以让两个进程之间无需文件系统支持而直接交换数据。这种通信方式特别适合于父进程和子进程之间的简单交互,比如子进程向父进程传递信息。
以下是使用匿名管道的一个基本示例,展示如何在子进程中将消息"hello"写入管道,然后父进程读取这个消息:
**父进程(parent.py):**
```python
import os
import sys
# 创建一个管道
pipe = os.pipe()
# 子进程的PID
child_pid = os.fork()
if child_pid == 0: # 子进程
os.close(pipe[0]) # 关闭写端
sys.stdout.flush() # 确保缓冲区的数据被写入
with open(pipe[1], 'w') as f:
f.write('hello')
os._exit(0) # 子进程退出
else: # 父进程
os.close(pipe[1]) # 关闭读端
with open(pipe[0], 'r') as f:
print(f.read()) # 从管道读取内容
os.waitpid(child_pid, 0) # 等待子进程结束
```
在这个例子中,父进程首先创建了一个管道,然后通过`os.fork()`创建子进程。子进程关闭管道的写端,写入"hello",然后立即退出;而父进程关闭读端,读取并打印内容,最后等待子进程结束。
运行`parent.py`,你会看到控制台输出 "hello"。
阅读全文
相关推荐



















