我使用vfork()在C中工作。我的程序运行良好,但我有关于隐式声明的警告。
我的代码:
if(vfork()==0){
...
}
我的警告是:
函数"vfork"的隐式声明[-Wimplicit函数声明]if(vfork()==0){^
我包括:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
如果我使用fork()而不是vfork(),警告就消失了。Soo问题只是我程序中的vfork()。我不知道这意味着什么,也不知道我是怎么解决的。
您需要包含以下两个标头:
#include <sys/types.h>
#include <unistd.h>
此外,在程序的开头添加以下行:
#define _BSD_SOURCE
如果您已经有了所需的包含文件,那么根据您的系统版本,您可能需要定义一些功能测试宏。请参阅您的系统的文档(类unix系统上的man vfork
)
添加到Igor的答案中,确保您不是为C99编译的。clang给了我一个错误"函数'vfork'的隐式声明在C99中无效",从参数中删除-std=c99
解决了这个问题。