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 に答える