catch-signal-fork.c revision 1.1
1/* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2012-2014 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17#include <stdlib.h> 18#include <signal.h> 19#include <unistd.h> 20 21void 22do_nothing (void) 23{ 24} 25 26void 27handle (int sig) 28{ 29 do_nothing (); /* handle marker */ 30} 31 32int 33main () 34{ 35 int i; 36 signal (SIGHUP, handle); 37 38 raise (SIGHUP); /* first HUP */ 39 40 signal (SIGCHLD, handle); 41 for (i = 0; i < 3; i++) /* fork loop */ 42 { 43 switch (fork()) 44 { 45 case -1: 46 perror ("fork"); 47 exit (1); 48 case 0: 49 exit (0); 50 } 51 wait (NULL); 52 } 53 54 raise (SIGHUP); /* second HUP */ 55 56 raise (SIGHUP); /* third HUP */ 57} 58 59