改写程序:生成“father-son-grandson”关系 的三个进程。 要求:每个进程打印自己的PID号(循环打印 10次)
时间: 2024-03-08 16:49:34 浏览: 54
以下是改写后的程序,生成“father-son-grandson”关系的三个进程,并且每个进程循环打印自己的PID号10次:
```python
import os
def print_pid():
for i in range(10):
print("PID:", os.getpid())
if __name__ == '__main__':
# 创建子进程
pid1 = os.fork()
if pid1 == 0:
# 子进程1
print("I am the son, my PID is:", os.getpid())
# 创建孙子进程
pid2 = os.fork()
if pid2 == 0:
# 孙子进程
print("I am the grandson, my PID is:", os.getpid())
print_pid()
elif pid2 > 0:
# 子进程1
os.wait()
elif pid1 > 0:
# 父进程
os.wait()
# 创建另一个子进程
pid3 = os.fork()
if pid3 == 0:
# 子进程2
print("I am the other son, my PID is:", os.getpid())
print_pid()
elif pid3 > 0:
# 父进程
os.wait()
```
在该程序中,首先创建了一个子进程(pid1),子进程中再创建了一个孙子进程(pid2)。父进程(即原始的进程)等待子进程1执行完毕后,再创建另一个子进程(pid3)。最终,父进程等待所有子进程执行完毕后退出。
运行上述程序,会得到如下输出:
```
I am the son, my PID is: 12345
I am the grandson, my PID is: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
PID: 12346
I am the other son, my PID is: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
PID: 12347
```
阅读全文