Sto cercando di compilare un semplice codice per testare la sigaction ma non ci sto riuscendo. Probabilmente sarà qualcosa di banale....sembra che sbagli a non includere un qualche header....magari potete aiutarmi.
Codice: Seleziona tutto
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
/* un gestore piuttosto semplice */
static void gestore(int signum) {
printf("Ricevuto segnale %d\n",signum);
exit(EXIT_FAILURE);
}
/* genero una sequenza infinita di interi */
int main(void) {
struct sigaction s;
int i;
/* inizializzo s a 0*/
memset(&s, 0, sizeof(s));
s.sa_handler = gestore;
/* registro gestore */
/*installo nuovo gestore s */
ec_meno1(sigaction(SIGINT, &s, NULL));
for (i = 1;; i++) {
/* ciclo infinito */
sleep(1);
printf("%d\n",i);
}
exit(EXIT_SUCCESS); /* mai eseguita */
}
Codice: Seleziona tutto
prova.c: In function ‘main’:
prova.c:19:3: warning: implicit declaration of function ‘memset’ [-Wimplicit-function-declaration]
memset(&s, 0, sizeof(s));
^
prova.c:19:3: warning: incompatible implicit declaration of built-in function ‘memset’
prova.c:23:3: warning: implicit declaration of function ‘ec_meno1’ [-Wimplicit-function-declaration]
ec_meno1(sigaction(SIGINT, &s, NULL));
^
/tmp/cc6D8k8h.o: In function `main':
prova.c:(.text+0x80): undefined reference to `ec_meno1'
collect2: error: ld returned 1 exit status