#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid;
printf("Parent process (PID %d)\n", getpid
());
pid = fork(); // Create a child process
if (pid < 0) {
return 1;
} else if (pid == 0) {
// Child process
printf("Child process (PID %d)\n", getpid
()); sleep(5); // Simulate some work
printf("Child process exiting\n"); } else {
// Parent process
int status;
wait(&status); // Wait for the child process to finish
printf("Parent process exiting\n"); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KCmludCBtYWluKCkgewogICAgcGlkX3QgcGlkOwoKICAgIHByaW50ZigiUGFyZW50IHByb2Nlc3MgKFBJRCAlZClcbiIsIGdldHBpZCgpKTsKCiAgICBwaWQgPSBmb3JrKCk7IC8vIENyZWF0ZSBhIGNoaWxkIHByb2Nlc3MKCiAgICBpZiAocGlkIDwgMCkgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiRm9yayBmYWlsZWRcbiIpOwogICAgICAgIHJldHVybiAxOwogICAgfSBlbHNlIGlmIChwaWQgPT0gMCkgewogICAgICAgIC8vIENoaWxkIHByb2Nlc3MKICAgICAgICBwcmludGYoIkNoaWxkIHByb2Nlc3MgKFBJRCAlZClcbiIsIGdldHBpZCgpKTsKICAgICAgICBzbGVlcCg1KTsgLy8gU2ltdWxhdGUgc29tZSB3b3JrCiAgICAgICAgcHJpbnRmKCJDaGlsZCBwcm9jZXNzIGV4aXRpbmdcbiIpOwogICAgICAgIGV4aXQoMCk7CiAgICB9IGVsc2UgewogICAgICAgIC8vIFBhcmVudCBwcm9jZXNzCiAgICAgICAgaW50IHN0YXR1czsKICAgICAgICB3YWl0KCZzdGF0dXMpOyAvLyBXYWl0IGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0byBmaW5pc2gKICAgICAgICBwcmludGYoIlBhcmVudCBwcm9jZXNzIGV4aXRpbmdcbiIpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==