zl程序教程

您现在的位置是:首页 >  Python

当前栏目

C --- wait(NULL) 作用?

2023-04-18 14:09:25 时间

Well, sorry, that much is obvious. What you want to know is, probably, what it waits for. The answer is: the termination of a child process. // 答案是:终止一个子进程

When you create a new child process with fork(), you have no control over when it will be executed with regard to its parent - it is up to the scheduler. You use wait for synchronization, when you want to make sure the parent will only proceed with its execution when its child has terminated. // 当您使用 fork() 创建一个新的子进程时,您无法控制何时执行它的父进程 - 这取决于调度程序。当您想确保父级仅在其子级终止时才继续执行时,您可以使用等待同步

If the parent’s execution reaches the wait before any child has terminated, it will stop the execution and only go on when a child has terminated. If a child terminates before the parent has reached wait, the child becomes a zombie, and when the parent reaches wait it destroys (“reaps”) the zombie and proceeds immediately. // 如果父级的执行在任何子级终止之前到达等待,它将停止执行并且仅在子级终止时继续执行。如果子进程在父进程到达等待之前终止,子进程将成为僵尸,当父进程到达等待时,它会销毁(“收割”)僵尸并立即继续。

You actually don’t call wait(), wait takes one int* argument that points to a integer where the child’s exit status will be stored. If you don’t care about the child’s exit status (which is quite often), you can just call wait(NULL). // 你实际上并没有调用 wait(),wait 接受一个 int* 参数,该参数指向一个整数,子进程的退出状态将存储在该整数中。如果你不关心孩子的退出状态(这很常见)

wait waits for the termination of any child process. If you want to wait for a specific child, see waitpid. //  wait 等待任何子进程的终止。如果要等待特定的孩子