AAE-CNAS-Labs/Topic-3-Forking/task_2_3.c

42 lines
932 B
C

//
// Written for Computer Networks and Systems lab classes
// AUTHOR : Sergiusz Warga
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
void child_task() {
printf("I am a child\n");
}
void print_pids() {
printf("My PID is %d\nMy parent's PID is %d\n", getpid(), getppid());
}
void print_pids_child() {
printf("CHILD\nMy PID is %d\nMy parent's PID is %d\n", getpid(), getppid());
}
int main() {
pid_t pid;
for (int i = 0; i < 5; ++i) {
pid = fork();
if (pid == -1) { // If something went wrong.
perror("Fork: ");
exit(EXIT_FAILURE);
}
if (pid == 0){
print_pids_child();
exit(EXIT_SUCCESS);
}
}
printf("I am a parent.\n");
print_pids();
sleep(1); // This may be required as the parent process won't wait for the child process to finish its execution.
return 0;
}