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