如何解决使用wait的程序编译时不包含sys / wait.h,并带有隐式声明警告
我有一个简单的C程序,它调用了wait()函数。但是,我的程序不包含sys / wait.h。它仍然可以编译并正常工作。本质上是用命令行参数重写过程映像。
在编译过程中,我收到以下警告:
my_program.c:在函数“ main”中 警告:函数“ wait”的隐式声明,您的意思是“ main”吗?
我的程序看起来像这样...完全符合我的要求。我只是不知道为什么不包含它时仍要定义wait()。
#include <stdlib.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
int main(int argc,char **argv)
{
pid_t my_pid;
my_pid = fork();
if (my_pid < 0)
{
printf("The fork didn't work! Terminate\n");
exit(0);
}
if (my_pid != 0)
{
// Parent block
printf("The parent will now wait\n");
wait(NULL);
printf("Done!\n");
}
else
{
// Child block
int resp;
resp = execvp(*(argv+1),argv+1);
printf("There was an error. Response code: %d\n Errno: %s\n",resp,stderror(errno));
}
}
但是,当我添加#include
解决方法
这是一个“ C”程序,而不是“ C ++”程序。不同的呼叫顺序没有链接。 C最初不需要预先定义被调用的函数。因此,您的编译器仅假设必须有一个可以调用的函数wait
并且返回一个整数值。您提供了一个参数NULL
,该参数被压入堆栈。
但是,不告诉编译器您正在调用的内容确实是不好的编程习惯,因此您应该包括sys/wait.h
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。