Home | History | Annotate | Download | only in tests
      1 #include <pthread.h>
      2 #include <signal.h>
      3 #include <stdlib.h>
      4 #include <stdio.h>
      5 #include <string.h>
      6 #include <unistd.h>
      7 #include <sys/wait.h>
      8 
      9 void *slavethread(void *arg)
     10 {
     11     while (1)
     12         pause();
     13 }
     14 
     15 int main(int argc, char **argv)
     16 {
     17     int i;
     18     for (i = 0; i < 10; i++) {
     19         pthread_t slave;
     20         if (pthread_create(&slave, 0, slavethread, 0)) {
     21             perror("pthread_create");
     22             exit(2);
     23         }
     24     }
     25 
     26     pid_t pid = getpid();
     27     switch (fork()) {
     28         case 0: // child
     29             sleep(2); // Should be enough to ensure (some) threads are created
     30             for (i = 0; i < 20 && kill(pid, SIGTERM) == 0; i++)
     31                 ;
     32             exit(0);
     33         case -1:
     34             perror("fork");
     35             exit(4);
     36     }
     37 
     38     while (1)
     39         pause();
     40     fprintf(stderr, "strange, this program is supposed to be killed!\n");
     41     return 1;
     42 }
     43