#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(void) {
pid_t pid;
printf("BEFORE FORK\n");
pid = fork();
if (pid > 0) {
sleep(1);
printf("PARENT PID: %d, PPID: %d, CHILD PID: %d\n", getpid(), getppid(), pid);
wait(NULL);
}
else if (pid == 0) {
printf("CHILD PID: %d, PPID: %d\n", getpid(), getppid());
exit(0); // Exit the child process properly
}
else {
printf("FORK ERROR\n");
exit(1);
}
printf("BOTH PROCESSES CONTINUE FROM HERE\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzeXMvd2FpdC5oPgoKaW50IG1haW4odm9pZCkgewogICAgcGlkX3QgcGlkOwogICAgcHJpbnRmKCJCRUZPUkUgRk9SS1xuIik7ICAKCiAgICBwaWQgPSBmb3JrKCk7CgogICAgaWYgKHBpZCA+IDApIHsgIAogICAgICAgIHNsZWVwKDEpOyAgCiAgICAgICAgcHJpbnRmKCJQQVJFTlQgUElEOiAlZCwgUFBJRDogJWQsIENISUxEIFBJRDogJWRcbiIsIGdldHBpZCgpLCBnZXRwcGlkKCksIHBpZCk7IAogICAgICAgIHdhaXQoTlVMTCk7IAogICAgfSAKICAgIGVsc2UgaWYgKHBpZCA9PSAwKSB7ICAKICAgICAgICBwcmludGYoIkNISUxEIFBJRDogJWQsIFBQSUQ6ICVkXG4iLCBnZXRwaWQoKSwgZ2V0cHBpZCgpKTsgIAogICAgICAgIGV4aXQoMCk7ICAvLyBFeGl0IHRoZSBjaGlsZCBwcm9jZXNzIHByb3Blcmx5CiAgICB9IAogICAgZWxzZSB7ICAKICAgICAgICBwcmludGYoIkZPUksgRVJST1JcbiIpOyAgCiAgICAgICAgZXhpdCgxKTsKICAgIH0KCiAgICBwcmludGYoIkJPVEggUFJPQ0VTU0VTIENPTlRJTlVFIEZST00gSEVSRVxuIik7ICAKICAgIHJldHVybiAwOwp9Cg==