| /* Test that all threads are killed when exit() is called. */ |
| |
| #include <pthread.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <unistd.h> |
| |
| void *thread_proc(void *arg) |
| { |
| /* Wait for main thread to block. */ |
| sleep(2); |
| |
| /* Exit the program. */ |
| exit(0); |
| |
| return NULL; |
| } |
| |
| int main(void) |
| { |
| pthread_t thread; |
| void *status; |
| |
| if (pthread_create(&thread, NULL, thread_proc, NULL)) { |
| perror("pthread_create"); |
| return 1; |
| } |
| |
| if (pthread_join(thread, &status)) { |
| perror("pthread_join"); |
| return 1; |
| } |
| |
| /* This code should not be reached. */ |
| fprintf(stderr, "Thread joined\n"); |
| |
| return 0; |
| } |
| |