2016-04-18 7 views
1

Hier ist mein Code:Handhabung Warnung: implizite Deklaration der Funktion ‚sigignore‘

#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; 
} 

Warum erhalte ich die folgende Warnung und wie kann ich es entfernen?

implizite Erklärung der Funktion ‚sigignore‘ [-Wimplicit Funktionsdeklaration] sigignore (SIGTERM);

Das Programm muss wie folgt kompiliert werden: gcc -o foo.o foo.c.

Dank

Antwort

2

Man sigignore sagen Sie #define _XOPEN_SOURCE 500 sigignore zu ermöglichen, zu verwenden. Weitere Informationen zu X/Open finden Sie unter here

+1

Zur Vollständigkeit der POSIX-Dokumentation hier: http://pubs.opengroup.org/onlinepubs/9699919799/functions/sighold.html, sowie die aktuelle Linux-Manpage hier: http: // man7 .org/linux/man-pages/man3/sigset.3.html – alk

0

Die Funktion, die Sie anrufen möchten, wurde vor 15 Jahren als veraltet markiert. Der normale Weg, Leute davon abzuhalten, diese Funktionen zu benutzen (ohne Programme zu unterbrechen), besteht darin, die Implementierung der Funktion in der Standardbibliothek zu lassen, aber die Deklaration aus den Header-Dateien zu entfernen (oder zumindest schwer zu aktivieren).

Verwenden Sie sigaction oder sigprocmask (je nachdem, was Sie eigentlich erreichen möchten).