-2
我对函数fork返回的值有点困惑。据我所知,值0
是child
过程和值>0
是为parent
过程。 我具有低于保存在一个变量中fork的returnin值C
int main()
{
int pid;
pid = fork();
if(pid == 0)
//DO SOMETHING
else
//DO SOMETHING ELSE
return 0;
}
的valiable pid
叉后的代码对每个过程不同? 我无法理解它如何切换价值。我有一个第二部分的代码
int main()
{
int pid;
if (pid == 0)
{
return 5;
}
printf("parent = %d waits for child = %d ", getpid(), pid);
waitpid(pid, NULL, 0);
printf("child terminates!")
return 0;
}
中,我不明白为什么与第一printf
行PID有孩子的价值。它不应该是父母的id
?
在第二个问题中,你说'PID'不是进程ID。但父母使用waitpid()等待子进程并等待。那么为什么它不是一个进程ID? –
@DimitrisMpl它是一个堆栈分配的整数变量,根本没有初始化。它与您在另一个函数中使用的“pid”变量不同,尽管名称相同。所以它只包含上次写入堆栈的地方。 – Ext3h