/* examples/misc/signal.c */ #include He_node *princ, *panel; void dialog_proc (char *name, void *client_data) { if (!strcmp (name, "Oui")) HeQuit(0); } void ask_quit (He_node *hn) { HeSimpleDialog ( HE_DIALOG_BELL, HE_DIALOG_TITLE, "Attention", HE_DIALOG_MESSAGE, "Etes-vous certain", HE_DIALOG_MESSAGE, "de vouloir quitter ?", HE_DIALOG_BUTTON, "Oui", HE_DIALOG_BUTTOK, "Annuler", HE_DIALOG_PROC, dialog_proc, 0); } void quit_proc (He_node *hn) { ask_quit (NULL); } void sig1_proc (int sig, void *data) { ask_quit (NULL); } void sig2_proc (int sig, void *data) { printf ("sig2_proc: sig = %d, data = \"%s\"\n", sig, (char*)data); } int main (int argc, char *argv[]) { HeInit (&argc, &argv); princ = HeCreateFrame (); HeSetFrameLabel (princ, "Test signaux"); HeSetFrameCloseProc (princ, ask_quit); panel = HeCreatePanel (princ); HeCreateButtonP (panel, "Quit", quit_proc, NULL); HeFit(panel); HeFit(princ); printf ("pid: %d\n", getpid()); HeAddSignal (SIGHUP, sig1_proc, NULL); HeAddSignal (SIGTERM, sig1_proc, NULL); HeAddSignal (SIGINT, sig1_proc, NULL); HeAddSignal (SIGUSR1, sig2_proc, "string passé en data"); return HeMainLoop (princ); }