diff --git a/ex2/T3.c b/ex2/T3.c index 0d03106c6e048ff8409d4576b6a69a060006d1c5..ea0ad414c4890404da930feca1ec3a71cd69f97f 100644 --- a/ex2/T3.c +++ b/ex2/T3.c @@ -5,21 +5,22 @@ #include <sys/types.h> #include <sys/wait.h> -void* runner(void* pid) { - printf("My TID is: %ld\nMy PID is: %d\n", pthread_self(), *((int*) pid)); +void* runner(void* arg) { + printf("My TID is: %ld, my PID is: %d\n", pthread_self(), getpid()); pthread_exit(0); } -pthread_t thread_gen(int* pid) { +pthread_t thread_gen() { pthread_t tid; pthread_attr_t attr; pthread_attr_init(&attr); - pthread_create(&tid, &attr, runner, (void*) pid); + pthread_create(&tid, &attr, runner, NULL); return tid; } int main() { int cpid1, cpid2; + // Fork 1: switch (cpid1 = fork()) { case -1 : perror("error"); @@ -27,8 +28,8 @@ int main() { case 0 : // Child process: pthread_t tid1, tid2; - tid1 = thread_gen(&cpid1); - tid2 = thread_gen(&cpid1); + tid1 = thread_gen(); + tid2 = thread_gen(); pthread_join(tid1, NULL); pthread_join(tid2, NULL); exit(0); @@ -39,6 +40,7 @@ int main() { perror("error"); } } + // Fork 2: switch (cpid2 = fork()) { case -1 : perror("error"); @@ -46,9 +48,9 @@ int main() { case 0 : // Child process: pthread_t tid1, tid2, tid3; - tid1 = thread_gen(&cpid2); - tid2 = thread_gen(&cpid2); - tid3 = thread_gen(&cpid2); + tid1 = thread_gen(); + tid2 = thread_gen(); + tid3 = thread_gen(); pthread_join(tid1, NULL); pthread_join(tid2, NULL); pthread_join(tid3, NULL);