0

我知道 fork() 创建了一个子进程,将 0 返回给子进程并将子进程的 pid 返回给父进程。

据我了解,wait() 还返回某种已终止的子进程的 pid。这是否与分叉后返回给父级的 pid 相同?

我不明白如何使用wait()。

我的教科书只是显示

int ReturnCode;
while (pid!=wait(&ReturnCode));
/*the child has terminated with Returncode as its return code*/

我什至不明白这是什么意思。

如何使用等待()?我正在使用 execv 创建一个子进程,但我希望父进程等待。有人请解释并举个例子。

谢谢

4

2 回答 2

0

wait()确实返回了死掉的子进程的 PID。如果您只有一个子进程,则实际上不需要检查 PID(但请检查它是否不为零或负数;有些情况可能会导致等待调用失败)。你可以在这里找到一个例子:http ://www.csl.mtu.edu/cs4411/www/NOTES/process/fork/wait.html

于 2011-06-20T05:49:02.503 回答
0

wait() 获取一个整数变量的地址并返回已完成进程的进程 ID。

更多关于wait()系统调用

while (pid!=wait(&ReturnCode));

循环将 wait() 返回的进程 id (pid) 与之前从fork或任何其他进程启动器接收到的 pid 进行比较。如果它发现已经结束的进程与该父进程一直在等待的进程不同,它会继续等待()。

于 2011-06-20T05:53:03.297 回答