簡體   English   中英

警告:函數“守護程序”的隱式聲明

[英]warning: implicit declaration of function 'daemon'

編譯程序時收到此警告。 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 daemon

glibc的功能測試宏要求(請參閱feature_test_macros(7)):

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

在Linux上,通過#define daemon()

  • _XOPEN_SOURCE
  • _BSD_SOURCE

通過做

#define _XOPEN_SOURCE 

要么

#define _BSD_SOURCE 

#include之前

#include <unistd.h>

或通過將-D _XOPEN_SOURCE-D _BSD_SOURCE添加到編譯命令中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM