我在编译程序时收到此警告。 daemon()在unistd.h中声明并包含在内。如何修复或消失?
错误:
dcron.c: In function 'main':
dcron.c:35:4: warning: implicit declaration of function 'daemon' [-Wimplicit-function-declaration]
if (daemon(1, 0) != 0) {
^
计划的一部分:
if (daemon(1, 0) != 0) {
fprintf(stderr, "error: failed to daemonize\n");
syslog(LOG_NOTICE, "error: failed to daemonize");
return 1;
}
设置: gcc4.8.2,glibc2.19 CFLAGS = -std = c99 -Wall -Wpedantic -Wextra
答案 0 :(得分:3)
您需要添加相关的头文件并启用_BSD_SOURCE
功能测试宏:
#define _BSD_SOURCE
#include <unistd.h>
来自man 3 daemon
:
glibc的功能测试宏要求(参见feature_test_macros(7)):
daemon():_ BSD_SOURCE || (_XOPEN_SOURCE&amp;&amp; _XOPEN_SOURCE&lt; 500)
答案 1 :(得分:2)
Linux daemon()
可通过#define
_XOPEN_SOURCE
_BSD_SOURCE
做
#define _XOPEN_SOURCE
或
#define _BSD_SOURCE
#include
之前的
#include <unistd.h>
或将-D _XOPEN_SOURCE
或-D _BSD_SOURCE
添加到编译命令中。