diff options
Diffstat (limited to 'lib/mlibc/tests/posix/pause.c')
-rw-r--r-- | lib/mlibc/tests/posix/pause.c | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/lib/mlibc/tests/posix/pause.c b/lib/mlibc/tests/posix/pause.c deleted file mode 100644 index 054c5a4..0000000 --- a/lib/mlibc/tests/posix/pause.c +++ /dev/null @@ -1,49 +0,0 @@ -#include <assert.h> -#include <signal.h> -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <errno.h> -#include <sys/wait.h> - -static void noop(int x) { - (void)x; -} - -int main() { - signal(SIGUSR1, &noop); - - int pid; - switch(pid = fork()) { - case -1: - perror("fork"); - abort(); - case 0: - pause(); - assert(errno == EINTR); - return 0; - default: - while (1) { - usleep(100); - kill(pid, SIGUSR1); - usleep(100); - int status; - - errno = 0; - if (waitpid(-1, &status, WNOHANG) <= 0) { - if (errno && errno != EAGAIN) { - perror("wait"); - kill(pid, SIGKILL); - } - continue; - } - - if (!WIFEXITED(status)) { - printf("wait returned %x\n", status); - abort(); - } - - return WEXITSTATUS(status); - } - } -} |