diff options
Diffstat (limited to 'manual/examples/sigusr.c')
-rw-r--r-- | manual/examples/sigusr.c | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/manual/examples/sigusr.c b/manual/examples/sigusr.c deleted file mode 100644 index 51b44dcf03..0000000000 --- a/manual/examples/sigusr.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Using kill for Communication - Copyright (C) 1991-2017 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, if not, see <http://www.gnu.org/licenses/>. -*/ - -/*@group*/ -#include <signal.h> -#include <stdio.h> -#include <sys/types.h> -#include <unistd.h> -/*@end group*/ - -/* When a @code{SIGUSR1} signal arrives, set this variable. */ -volatile sig_atomic_t usr_interrupt = 0; - -void -synch_signal (int sig) -{ - usr_interrupt = 1; -} - -/* The child process executes this function. */ -void -child_function (void) -{ - /* Perform initialization. */ - printf ("I'm here!!! My pid is %d.\n", (int) getpid ()); - - /* Let parent know you're done. */ - kill (getppid (), SIGUSR1); - - /* Continue with execution. */ - puts ("Bye, now...."); - exit (0); -} - -int -main (void) -{ - struct sigaction usr_action; - sigset_t block_mask; - pid_t child_id; - - /* 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); - - /* Create the child process. */ - child_id = fork (); - if (child_id == 0) - child_function (); /* Does not return. */ - -/*@group*/ - /* Busy wait for the child to send a signal. */ - while (!usr_interrupt) - ; -/*@end group*/ - - /* Now continue execution. */ - puts ("That's all, folks!"); - - return 0; -} |