处理警告:隐式声明函数'sigignore'

时间:2016-04-18 14:06:08

标签: c compilation posix compiler-warnings

这是我的代码:

#include <sys/types.h>
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h> 
#include <sys/time.h>
#include <assert.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>

int main(int argc, char** argv) {

sigignore(SIGTERM);
return 0;
}

为什么我会收到以下警告?如何删除它?

  

函数'sigignore'的隐式声明   [-Wimplicit-function-declaration] sigignore(SIGTERM);

程序必须按如下方式编译:{{1​​}}。

由于

2 个答案:

答案 0 :(得分:2)

sigignore告诉您使用#define _XOPEN_SOURCE 500启用sigignore。有关X / Open的更多信息,请访问here

答案 1 :(得分:0)

15年前,您要呼叫的功能已被标记为已废弃。阻止人们使用这些函数(没有实际破坏程序)的正常方法是将函数的实现保留在标准库中,但是从头文件中删除声明(或者至少使其难以启用)。

使用sigactionsigprocmask(取决于您实际想要完成的目标)。