#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h> // For wait()
int main() {
pid_t pid;
pid = fork(); // Create a new process
if (pid < 0) {
// fork() failed
return 1;
}
else if (pid == 0) {
// Child process
printf("I am a child, my parent process is %d\n", getppid
()); }
else {
// Parent process
printf("I am parent process, my id is %d\n", getpid
()); wait(NULL); // Wait for child to finish
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN5cy93YWl0Lmg+IC8vIEZvciB3YWl0KCkKCmludCBtYWluKCkgewogICAgcGlkX3QgcGlkOwoKICAgIHBpZCA9IGZvcmsoKTsgLy8gQ3JlYXRlIGEgbmV3IHByb2Nlc3MKCiAgICBpZiAocGlkIDwgMCkgewogICAgICAgIC8vIGZvcmsoKSBmYWlsZWQKICAgICAgICBwZXJyb3IoImZvcmsgZmFpbGVkIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBlbHNlIGlmIChwaWQgPT0gMCkgewogICAgICAgIC8vIENoaWxkIHByb2Nlc3MKICAgICAgICBwcmludGYoIkkgYW0gYSBjaGlsZCwgbXkgcGFyZW50IHByb2Nlc3MgaXMgJWRcbiIsIGdldHBwaWQoKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAvLyBQYXJlbnQgcHJvY2VzcwogICAgICAgIHByaW50ZigiSSBhbSBwYXJlbnQgcHJvY2VzcywgbXkgaWQgaXMgJWRcbiIsIGdldHBpZCgpKTsKICAgICAgICB3YWl0KE5VTEwpOyAvLyBXYWl0IGZvciBjaGlsZCB0byBmaW5pc2gKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=