gpt4 book ai didi

c - Waitpid 函数中的 WNOHANG 宏

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:09 26 4
gpt4 key购买 nike

程序:

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<stdlib.h>

int main()
{
int pid=fork();
if(pid==0){
printf("Child Executing: PID = %d\n",getpid());
pause();
}
else{
printf("Parent waiting: PID = %d\n",getpid());
int status;
waitpid(pid,&status,WNOHANG);
if(WIFEXITED(status))
printf("Child Terminates Normally\n");
else if(WIFSIGNALED(status))
printf("Child terminated by signal\n");
}
}

在上面的程序中,我将 WNOHANG 宏传递给了 waitpid 函数的选项参数。它不等待子进程去完成。那么,wnohang有什么用呢。手册页包含以下语句,

如果没有 child 退出,WNOHANG 立即返回。

具体意思没看懂。那么,WNOHANG有什么用,我们用在什么地方。有没有 WNOHANG 的实时用例。

提前致谢。

最佳答案

如果您定期轮询以查看进程是否已退出,则可以使用它。如果还没有你继续你的程序的其余部分:

while (some_condition) {
result = waitpid(pid, &status, WNOHANG);
if (result > 0) {
// clean up the process
} else if (result < 0) {
perror("waitpid");
}
// do other processing
}

关于c - Waitpid 函数中的 WNOHANG 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com