让wait等待所有子进程结束

博客给出了一段代码“while(wait(NULL)!=-1){}”,这是信息技术领域中可能用于等待子进程结束的代码片段。
while(wait(NULL)!=-1){}
### 实现父进程等待子进程结束 为了确保父进程能够正常等待子进程完成并获取其退出状态,在Linux环境中通常使用`wait()`或`waitpid()`函数。这些函数允许父进程暂停执行,直至指定的子进程终止,并从中获得有关子进程的信息。 下面展示了一个简单的C语言代码片段,用于创建一个新进程并通过调用`fork()`分离成父子两个独立的工作单元;随后利用`wait()`让父进程挂起直到接收到子进程结束的通知: ```c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> int main(void){ pid_t child_pid; printf("Parent process starting...\n"); /* 创建一个新的子进程 */ child_pid = fork(); if (child_pid != 0) { // 这里是父进程中... int status; printf("Waiting for the child to complete.\n"); // 调用 wait 函数来阻塞当前线程(这里是父进程),直到某个子进程结束为止。 wait(&status); printf("Child has finished with exit code %d\n", WEXITSTATUS(status)); } else { // ...这里则是子进程中 printf("This is the child process, now sleeping for five seconds.\n"); sleep(5); printf("The child process ends here!\n"); _exit(EXIT_SUCCESS); // 正常退出子进程 } return EXIT_SUCCESS; } ``` 这段代码展示了基本流程:通过`fork()`生成子进程后立即进入不同的分支逻辑处理各自的任务。对于父进程而言,则需调用`wait()`以防止过早结束造成孤儿进程现象的发生以及避免未捕获到子进程的状态信息形成僵尸进程[^1]。 此外,还可以采用更灵活的方式——`waitpid()`来进行特定条件下的等待操作,比如只关注某一个具体的子进程或是设置非阻塞性质等特性。这取决于实际应用场景的需求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值