diff options
| -rw-r--r-- | test/unistd/tst-gettid.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/unistd/tst-gettid.c b/test/unistd/tst-gettid.c new file mode 100644 index 0000000..996ae15 --- /dev/null +++ b/test/unistd/tst-gettid.c @@ -0,0 +1,39 @@ +#define _GNU_SOURCE +#include <stdio.h> +#include <unistd.h> +#include <pthread.h> +#include <stdlib.h> + +void *thread_func(void *arg) +{ + printf("Thread %ld:\n", (long)arg); + printf(" PID = %d\n", getpid()); + printf(" TID = %d (gettid)\n", gettid()); + printf(" pthread ID = %lu\n\n", pthread_self()); + return NULL; +} + +int main(void) +{ + const int NUM_THREADS = 3; + pthread_t threads[NUM_THREADS]; + + printf("Main thread:\n"); + printf(" PID = %d\n", getpid()); + printf(" TID = %d (gettid)\n", gettid()); + printf(" pthread ID = %lu\n\n", pthread_self()); + + for (long i = 0; i < NUM_THREADS; i++) { + if (pthread_create(&threads[i], NULL, thread_func, (void *)i) != 0) { + perror("pthread_create"); + exit(EXIT_FAILURE); + } + } + + for (int i = 0; i < NUM_THREADS; i++) { + pthread_join(threads[i], NULL); + } + + return 0; +} + |
