C 理解UNIX中的fork系统调用
我试图理解前面给我的一行代码的执行顺序,以及使用C 理解UNIX中的fork系统调用,c,linux,unix,process,fork,C,Linux,Unix,Process,Fork,我试图理解前面给我的一行代码的执行顺序,以及使用fork()系统调用创建进程。它是在UNIX上运行的C语言 我理解fork()背后的主要概念,但是,我想了解从以下代码行派生的流程树创建: x = fork() || !fork(); 任何帮助都将不胜感激 运行代码的初始父进程(假设它是PID=1000),执行x=fork()部分,并生成一个新的子进程(假设PID=1001) 对于进程PID=1000,到目前为止,逻辑表达式的值不是零,因为它返回其子进程的PID。因此,由于,逻辑表达式的其余部分
fork()
系统调用创建进程。它是在UNIX上运行的C语言
我理解fork()
背后的主要概念,但是,我想了解从以下代码行派生的流程树创建:
x = fork() || !fork();
任何帮助都将不胜感激 运行代码的初始父进程(假设它是
PID=1000
),执行x=fork()
部分,并生成一个新的子进程(假设PID=1001
)
对于进程PID=1000
,到目前为止,逻辑表达式的值不是零,因为它返回其子进程的PID
。因此,由于,逻辑表达式的其余部分不需要计算
对于进程PID=1001
,到目前为止逻辑表达式的值是0
,因为在创建新进程的情况下,返回0
;因此,它还必须计算逻辑表达式的其余部分。它执行!fork()
part,生成一个新进程(比如说PID=1002
)
派生的流程树如下所示:
1000
|
|
1001
|
|
1002
很好,另外,fork()
返回2次,一次是父进程中子进程的pid,另一次是子进程返回0。两个进程在fork()
返回后继续处理。您知道fork()
返回什么吗?你知道短路评估吗?把这些加在一起,你会得到3个过程。。。