📄 sigusr.c.texi
字号:
@group#include <signal.h>#include <stdio.h>#include <sys/types.h>#include <unistd.h>@end group/* @r{When a @code{SIGUSR1} signal arrives, set this variable.} */volatile sig_atomic_t usr_interrupt = 0;void synch_signal (int sig)@{ usr_interrupt = 1;@}/* @r{The child process executes this function.} */void child_function (void)@{ /* @r{Perform initialization.} */ printf ("I'm here!!! My pid is %d.\n", (int) getpid ()); /* @r{Let parent know you're done.} */ kill (getppid (), SIGUSR1); /* @r{Continue with execution.} */ puts ("Bye, now...."); exit (0);@}intmain (void)@{ struct sigaction usr_action; sigset_t block_mask; pid_t child_id; /* @r{Establish the signal handler.} */ sigfillset (&block_mask); usr_action.sa_handler = synch_signal; usr_action.sa_mask = block_mask; usr_action.sa_flags = 0; sigaction (SIGUSR1, &usr_action, NULL); /* @r{Create the child process.} */ child_id = fork (); if (child_id == 0) child_function (); /* @r{Does not return.} */@group /* @r{Busy wait for the child to send a signal.} */ while (!usr_interrupt) ;@end group /* @r{Now continue execution.} */ puts ("That's all, folks!"); return 0;@}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -