#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork(); // First fork
if (pid == 0) { // Child process
printf("Child 1: PID=%d\n", getpid
());
// Forking again
pid_t pid_child2 = fork();
if (pid_child2 == 0) { // Child of child process
printf("Child 2: PID=%d, Parent PID=%d\n", getpid
(), getppid
()); printf("Child 2: Exiting...\n"); } else if (pid_child2 > 0) { // Parent process (Child 1)
printf("Child 1: Waiting for Child 2 to finish...\n"); waitpid(pid_child2, NULL, 0); // Wait for Child 2 to finish
printf("Child 1: Exiting...\n"); } else { // Error handling for second fork
}
} else if (pid > 0) { // Parent process
printf("Parent: PID=%d\n", getpid
()); printf("Parent: Waiting for Child 1 to finish...\n"); waitpid(pid, NULL, 0); // Wait for Child 1 to finish
printf("Parent: Exiting...\n"); } else { // Error handling for first fork
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KCmludCBtYWluKCkgewogICAgcGlkX3QgcGlkID0gZm9yaygpOyAvLyBGaXJzdCBmb3JrCgogICAgaWYgKHBpZCA9PSAwKSB7IC8vIENoaWxkIHByb2Nlc3MKICAgICAgICBwcmludGYoIkNoaWxkIDE6IFBJRD0lZFxuIiwgZ2V0cGlkKCkpOwoKICAgICAgICAvLyBGb3JraW5nIGFnYWluCiAgICAgICAgcGlkX3QgcGlkX2NoaWxkMiA9IGZvcmsoKTsKCiAgICAgICAgaWYgKHBpZF9jaGlsZDIgPT0gMCkgeyAvLyBDaGlsZCBvZiBjaGlsZCBwcm9jZXNzCiAgICAgICAgICAgIHByaW50ZigiQ2hpbGQgMjogUElEPSVkLCBQYXJlbnQgUElEPSVkXG4iLCBnZXRwaWQoKSwgZ2V0cHBpZCgpKTsKICAgICAgICAgICAgcHJpbnRmKCJDaGlsZCAyOiBFeGl0aW5nLi4uXG4iKTsKICAgICAgICAgICAgZXhpdChFWElUX1NVQ0NFU1MpOwogICAgICAgIH0gZWxzZSBpZiAocGlkX2NoaWxkMiA+IDApIHsgLy8gUGFyZW50IHByb2Nlc3MgKENoaWxkIDEpCiAgICAgICAgICAgIHByaW50ZigiQ2hpbGQgMTogV2FpdGluZyBmb3IgQ2hpbGQgMiB0byBmaW5pc2guLi5cbiIpOwogICAgICAgICAgICB3YWl0cGlkKHBpZF9jaGlsZDIsIE5VTEwsIDApOyAvLyBXYWl0IGZvciBDaGlsZCAyIHRvIGZpbmlzaAogICAgICAgICAgICBwcmludGYoIkNoaWxkIDE6IEV4aXRpbmcuLi5cbiIpOwogICAgICAgICAgICBleGl0KEVYSVRfU1VDQ0VTUyk7CiAgICAgICAgfSBlbHNlIHsgLy8gRXJyb3IgaGFuZGxpbmcgZm9yIHNlY29uZCBmb3JrCiAgICAgICAgICAgIHBlcnJvcigiZm9yayIpOwogICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmIChwaWQgPiAwKSB7IC8vIFBhcmVudCBwcm9jZXNzCiAgICAgICAgcHJpbnRmKCJQYXJlbnQ6IFBJRD0lZFxuIiwgZ2V0cGlkKCkpOwogICAgICAgIHByaW50ZigiUGFyZW50OiBXYWl0aW5nIGZvciBDaGlsZCAxIHRvIGZpbmlzaC4uLlxuIik7CiAgICAgICAgd2FpdHBpZChwaWQsIE5VTEwsIDApOyAvLyBXYWl0IGZvciBDaGlsZCAxIHRvIGZpbmlzaAogICAgICAgIHByaW50ZigiUGFyZW50OiBFeGl0aW5nLi4uXG4iKTsKICAgIH0gZWxzZSB7IC8vIEVycm9yIGhhbmRsaW5nIGZvciBmaXJzdCBmb3JrCiAgICAgICAgcGVycm9yKCJmb3JrIik7CiAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==