想问一下,为什么这里if和else都会被执行呀
第二行的注释是错误的,获取的是父进程的进程号。
父进程和子进程都会执行 os.fork
后的所有代码,而 os.fork
的返回值可以用来判断是父进程还是子进程。
由于子进程和父进程都会执行位于 os.fork
后的 if...else...
块,所以在父进程中输出了第七行,在子进程中输出了第五行。
2 回答4.3k 阅读✓ 已解决
2 回答850 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答840 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.5k 阅读
3 回答894 阅读✓ 已解决
执行fork前,你只有一个 python 进程。
执行 fork 时,操作系统会复制整个进程。
操作系统复制完,在复制出来的进程返回 0,在原进程返回复制出来的进程的 PID 。
下图中,方框左下角的数字,是方框所属进程的 PID 。
回答你的问题,实际发生的事情是 fork 产生的进程执行了 if 分支,原进程执行了 else 分支。