devo inviare due segnali ad un processo, SIGUSR1
e SIGUSR2
, al fine di modificare una particolare variabile booleana nel programma (SIGUSR1
imposta su veri, SIGUSR2
imposta su falsa) . Così ho scritto una funzione signalHandler()
per controllare il comportamento di SIGUSR1
o SIGUSR2
. Il problema è: come impostare sigaction()
per gestire questa particolare attività? Ho trascorso molto tempo su Google, ho letto ovunque che dovrei usare sigaction()
invece del obsoleto signal()
. Nella pagina man ho trovato questoUso di sigaction()
int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
in signum devo mettere il tipo di segnale che voglio gestire, allora ho un parametro struct sigaction:
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};
nel primo campo ho pensato dovrei impostare il nome del mio gestore di segnale, ma non so come posso impostare gli altri campi.
Infine, a cosa serve: struct sigaction *oldact
?
'oldact' memorizza il precedente stato di gestione del segnale per il numero di segnale' signum'. – moshbear
@moshbear posso impostarlo su NULL se non voglio usarlo? – Sicioldr
__ Sì, è possibile. (scusate i trattini bassi, ma c'è un limite di lunghezza minimo di 15 caratteri per i commenti). – moshbear