编程实现进程间管道通信。要求:父子进程共享一无名管道,两个子进程作为发送方分别向管道发送一行信息,父进程先读出子进程P1发来的信息行,将其转换为大写字母输出;再读出子进程P2发来的信息行,将其转换为小写字母输出。
时间: 2023-12-30 09:02:57 浏览: 79
进程间通信之管道通信
下面是一个 Python 实现进程间管道通信的示例代码:
```python
import os
# 创建无名管道
r, w = os.pipe()
# 创建子进程P1
p1 = os.fork()
if p1 == 0:
# 子进程P1写入信息
os.close(r)
message = "Hello from P1"
os.write(w, message.encode())
os.close(w)
exit()
# 创建子进程P2
p2 = os.fork()
if p2 == 0:
# 子进程P2写入信息
os.close(r)
message = "Hi from P2"
os.write(w, message.encode())
os.close(w)
exit()
# 父进程读取信息
os.close(w)
message = os.read(r, 1024).decode().strip()
print("Received message from P1:", message.upper())
message = os.read(r, 1024).decode().strip()
print("Received message from P2:", message.lower())
os.close(r)
```
在示例代码中,首先创建了一个无名管道,然后创建两个子进程P1和P2,分别向管道发送一行信息。父进程通过管道读取信息,并将P1发来的信息转换为大写字母输出,将P2发来的信息转换为小写字母输出。最后关闭管道。注意,在每个子进程中,需要关闭管道的读端,否则会造成管道阻塞。
阅读全文