forked from OSchip/llvm-project
62 lines
899 B
C
62 lines
899 B
C
#include <unistd.h>
|
|
#include <stdio.h>
|
|
#include <signal.h>
|
|
|
|
static int sigchld_no;
|
|
static int nosig_no;
|
|
static int weird_value;
|
|
|
|
void
|
|
sigchld_handler (int signo)
|
|
{
|
|
sigchld_no++;
|
|
printf ("Got sigchld %d.\n", sigchld_no);
|
|
}
|
|
|
|
int
|
|
call_me (int some_value)
|
|
{
|
|
int ret_val = 0;
|
|
int i;
|
|
for (i = 0; i < some_value; i++)
|
|
{
|
|
int result = 0;
|
|
if (i%2 == 0)
|
|
result = kill (getpid(), SIGCHLD);
|
|
else
|
|
sigchld_no++;
|
|
|
|
usleep(1000);
|
|
if (result == 0)
|
|
ret_val++;
|
|
}
|
|
usleep (10000);
|
|
return ret_val;
|
|
}
|
|
|
|
int
|
|
call_me_nosig (int some_value)
|
|
{
|
|
int ret_val = 0;
|
|
int i;
|
|
for (i = 0; i < some_value; i++)
|
|
weird_value += i % 4;
|
|
|
|
nosig_no += some_value;
|
|
return some_value;
|
|
}
|
|
|
|
int
|
|
main ()
|
|
{
|
|
int ret_val;
|
|
signal (SIGCHLD, sigchld_handler);
|
|
|
|
ret_val = call_me (2); // Stop here in main.
|
|
|
|
ret_val = call_me_nosig (10);
|
|
|
|
return 0;
|
|
|
|
}
|