Example for chapter on UNIX signals

This commit is contained in:
Fabio Scotto di Santolo
2025-08-22 14:22:01 +02:00
parent 99cbf7d4fb
commit 035027ad06
5 changed files with 200 additions and 0 deletions

34
chp10/pause.c Normal file
View File

@@ -0,0 +1,34 @@
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
/* Handler for SIGINT */
static void sigint_handler(int signo)
{
/*
* Technically, you shouldn't use printf(...) in a
* signal handler, but it isn't the end of the
* world. I'll discuss why in the section
* "Reentrancy".
*/
printf("Caught SIGINT\n");
exit(EXIT_SUCCESS);
}
int main(void)
{
/*
* Register sigint_handler as our signal handler
* for SIGINT.
*/
if (signal(SIGINT, sigint_handler) == SIG_ERR) {
fprintf(stderr, "Cannot handle SIGINT\n");
exit(EXIT_FAILURE);
}
for (;;) {
pause();
}
return EXIT_SUCCESS;
}