Back to index

glibc  2.9
tst-raise.c
Go to the documentation of this file.
00001 /* Copyright (C) 2003 Free Software Foundation, Inc.
00002    This file is part of the GNU C Library.
00003    Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
00004 
00005    The GNU C Library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Lesser General Public
00007    License as published by the Free Software Foundation; either
00008    version 2.1 of the License, or (at your option) any later version.
00009 
00010    The GNU C Library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Lesser General Public License for more details.
00014 
00015    You should have received a copy of the GNU Lesser General Public
00016    License along with the GNU C Library; if not, write to the Free
00017    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00018    02111-1307 USA.  */
00019 
00020 #include <errno.h>
00021 #include <error.h>
00022 #include <signal.h>
00023 #include <stdlib.h>
00024 #include <stdio.h>
00025 
00026 volatile int count;
00027 
00028 void
00029 sh (int sig)
00030 {
00031   ++count;
00032 }
00033 
00034 int
00035 main (void)
00036 {
00037   struct sigaction sa;
00038   sa.sa_handler = sh;
00039   sigemptyset (&sa.sa_mask);
00040   sa.sa_flags = 0;
00041   if (sigaction (SIGUSR1, &sa, NULL) < 0)
00042     {
00043       printf ("sigaction failed: %m\n");
00044       exit (1);
00045     }
00046   if (raise (SIGUSR1) < 0)
00047     {
00048       printf ("first raise failed: %m\n");
00049       exit (1);
00050     }
00051   if (raise (SIGUSR1) < 0)
00052     {
00053       printf ("second raise failed: %m\n");
00054       exit (1);
00055     }
00056   if (count != 2)
00057     {
00058       printf ("signal handler not called 2 times\n");
00059       exit (1);
00060     }
00061   exit (0);
00062 }