c - 警告 : implicit declaration of function 'daemon'

标签 c daemon unistd.h implicit-declaration

我在编译我的程序时收到此警告。 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

最佳答案

您需要添加相关头文件并启用_BSD_SOURCE特性测试宏:

#define _BSD_SOURCE
#include <unistd.h>

来自 man 3 守护程序:

Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

daemon(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

关于c - 警告 : implicit declaration of function 'daemon' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24161945/

相关文章:

c - 不调用目录搜寻递归函数

c - 参数数量可变的函数

c - 在基本c程序中查找重复时输出错误0

c - 两个线程调用一个函数的不可预测的结果

c - 如何获得 2^100 * 3^3 模 1000000007 的结果

c - 从 stderr 而不是 stdin 读取

dockerd 不在 nixos 上运行

android - 如何为终端和Android Studio运行相同的Gradle守护程序?

gruntjs - 需要永远执行 Grunt Watch

c - 无法将 char 指针传递给 gethostname (Linux)