为什么wait()函数需要更多的参数?

时间:2014-12-10 11:09:58

标签: c fork waitpid

我尝试使用waitpid()函数,它需要三个参数,而我实现了一个下面 代码,我有一些错误,而不是waitpid()函数我使用wait()函数 用三个论点。它工作正常我不知道它是如何工作的。 任何人都可以解释一下吗?

 #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;
 }

但是wait函数的语法是

 pid_t wait(int *status);

1 个答案:

答案 0 :(得分:4)

根据手册页here,您需要添加<sys/types.h><sys/wait.h>个头文件才能使用wait() [或waitpid()]我不是看到你的代码。

您的编译器很可能使用了implicit declaration wait() {{1}}函数,以防万一

  • 接受任意数量的输入参数
  • 返回一个整数。

如果包含上述头文件和complie,则编译器应生成有关

的警告
  

功能“等待”的参数太多了