42 lines
892 B
C
42 lines
892 B
C
#include <pthread.h>
|
|
#include <signal.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <sys/wait.h>
|
|
|
|
void *slavethread(void *arg)
|
|
{
|
|
while (1)
|
|
pause();
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
int i;
|
|
for (i = 0; i < 10; i++) {
|
|
pthread_t slave;
|
|
if (pthread_create(&slave, 0, slavethread, 0)) {
|
|
perror("pthread_create");
|
|
exit(2);
|
|
}
|
|
}
|
|
|
|
pid_t pid = getpid();
|
|
switch (fork()) {
|
|
case 0: // child
|
|
sleep(2); // Should be enough to ensure (some) threads are created
|
|
for (i = 0; i < 20 && kill(pid, SIGTERM) == 0; i++)
|
|
;
|
|
exit(0);
|
|
case -1:
|
|
perror("fork");
|
|
exit(4);
|
|
}
|
|
|
|
while (1)
|
|
pause();
|
|
fprintf(stderr, "strange, this program is supposed to be killed!\n");
|
|
return 1;
|
|
}
|