From 5ca0ef085c511c8639ec74be5f0899d8b7e1d9d7 Mon Sep 17 00:00:00 2001 From: Giacomo Tesio Date: Fri, 26 May 2017 00:39:47 +0200 Subject: [PATCH] newlib: fix test for SIGSTOP/SIGCONT --- qa/lib/newlib/203-signals.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/qa/lib/newlib/203-signals.c b/qa/lib/newlib/203-signals.c index 9d81e9e..4e043ca 100644 --- a/qa/lib/newlib/203-signals.c +++ b/qa/lib/newlib/203-signals.c @@ -4,6 +4,8 @@ #include #include +int p[2]; + void sigcont() { signal(SIGCONT,sigcont); /* reset signal */ printf("CHILD: Got SIGCONT\n"); @@ -16,9 +18,24 @@ void sigstop() { exit(1); } +void childloop(void) +{ + signal(SIGCONT,sigcont); /* set function calls */ + signal(SIGSTOP,sigstop); /* set function calls */ + printf("Child going to loop...\n"); + close(p[1]); + close(p[0]); + for(;;){ + /* loop for ever */ + printf("."); + usleep(500); + } + exit(0); +} + int main() { - int pid, p[2], child, cstatus; + int pid, child, cstatus; char dummy[1]; /* get child process */ @@ -33,16 +50,7 @@ main() { } if (pid == 0) { - signal(SIGCONT,sigcont); /* set function calls */ - signal(SIGSTOP,sigstop); /* set function calls */ - printf("Child going to loop...\n"); - close(p[1]); - close(p[0]); - for(;;){ - /* loop for ever */ - printf("."); - usleep(1000); - } + childloop(); } else /* parent */ {