/* signal.h, stdio.h, unistd.h */
int sigintflag = 0;
void handler(int signo)
{
sigintflag = 1;
}
int main(void)
{
if (signal(SIGINT, handler) == SIG_ERR) ...
while (1) {
sleep(1);
if (sigintflag) {
puts("Bye bye!");
return 0;
}
}
}
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void handler(int signo)
{
write(STDERR_FILENO,"Please be patient...", 20);
}
int main(void)
{
...
signal(SIGINT, handler);
/* Important processing here */
signal(SIGINT, SIG_DFL);
/* Less important code here */
}
/* signal.h, stdio.h, unistd.h */
void sighand(int signo)
{
write(STDOUT_FILENO, "Handled SIGINT\n", 14);
}
int main(void)
{
sigset_t newmask, oldmask, pendmask;
signal(SIGINT, sighand);
sigemptyset(&newmask);
sigaddset(&newmask, SIGINT);
sigprocmask(SIG_BLOCK, &newmask, &oldmask);
sleep(5);
sigpending(&pendmask);
if (sigismember(&pendmask, SIGINT)) puts("\nSIGINT pending");
sigprocmask(SIG_SETMASK, &oldmask, NULL);
puts("\nSIGINT unblocked");
sleep(5);
return 0;
}
[an error occurred while processing this directive]