[英]WNOHANG Macro in Waitpid Function
程序:
#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函數的option參數。 它不等待子進程完成。 那么,wnohang的用途是什么。 手冊頁包含以下語句,
WNOHANG return immediately if no child has exited.
我不明白確切的意思。 那么,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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.