1

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

4

2 回答 2

3

您需要添加相关的头文件并启用_BSD_SOURCE功能测试宏:

#define _BSD_SOURCE
#include <unistd.h>

来自man 3 daemon

glibc 的功能测试宏要求(参见 feature_test_macros(7)):

守护进程():_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

于 2014-06-11T11:51:57.857 回答
2

在 Linuxdaemon()上可以通过#defineing 或者

  • _XOPEN_SOURCE
  • _BSD_SOURCE

通过做

#define _XOPEN_SOURCE 

或者

#define _BSD_SOURCE 

之前#include_

#include <unistd.h>

或通过在编译命令中添加-D _XOPEN_SOURCE或。-D _BSD_SOURCE

于 2014-06-11T11:53:11.767 回答