我尝试使用 waitpid() 函数,它需要三个参数,当我实现下面的代码时,我遇到了一些错误,我使用带有三个参数的 wait() 函数,而不是 waitpid() 函数。它工作正常,我不知道它是如何工作的。有谁能解释一下吗??
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
main()
{
pid_t pid;
int p;
if((pid=fork())==0){
printf("Child present\n");
sleep(2);
printf("Child terminated\n");
_exit(0);
}
wait(pid,&p,0);
printf("parent terminated\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但等待函数的语法是
pid_t wait(int *status);
Run Code Online (Sandbox Code Playgroud)
根据此处的手册页,您需要包含<sys/types.h>头<sys/wait.h>文件才能使用我在代码中没有看到的wait()[或 ]。waitpid()
您的编译器很可能使用了某些implicit declaration函数wait(),以防万一,
如果您包含上述头文件并编译,您的编译器应该产生有关以下内容的警告
函数“wait”的参数太多