#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main( ) {
pid_t pid;
printf ( "Starting program (PID: %d)\n " , getpid
( ) ) ;
// fork() system call to create a new process
pid = fork( ) ;
if ( pid < 0 ) {
// Error occurred
return 1 ;
}
else if ( pid == 0 ) {
// Child Process
printf ( "\n [Child] Created (PID: %d)\n " , getpid
( ) ) ; printf ( "[Child] Parent PID: %d\n " , getppid
( ) ) ; printf ( "[Child] Performing task and exiting...\n " ) ; sleep( 2 ) ; // Simulate work
exit ( 0 ) ; // Exit system call }
else {
// Parent Process
printf ( "\n [Parent] Created child with PID: %d\n " , pid
) ; printf ( "[Parent] Waiting for child to finish...\n " ) ;
// wait() system call to wait for child completion
wait( NULL) ;
printf ( "\n [Parent] Child finished.\n " ) ; printf ( "[Parent] Exiting.\n " ) ; }
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvd2FpdC5oPgoKaW50IG1haW4oKSB7CiAgICBwaWRfdCBwaWQ7CgogICAgcHJpbnRmKCJTdGFydGluZyBwcm9ncmFtIChQSUQ6ICVkKVxuIiwgZ2V0cGlkKCkpOwoKICAgIC8vIGZvcmsoKSBzeXN0ZW0gY2FsbCB0byBjcmVhdGUgYSBuZXcgcHJvY2VzcwogICAgcGlkID0gZm9yaygpOwoKICAgIGlmIChwaWQgPCAwKSB7CiAgICAgICAgLy8gRXJyb3Igb2NjdXJyZWQKICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZvcmsgRmFpbGVkXG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGVsc2UgaWYgKHBpZCA9PSAwKSB7CiAgICAgICAgLy8gQ2hpbGQgUHJvY2VzcwogICAgICAgIHByaW50ZigiXG5bQ2hpbGRdIENyZWF0ZWQgKFBJRDogJWQpXG4iLCBnZXRwaWQoKSk7CiAgICAgICAgcHJpbnRmKCJbQ2hpbGRdIFBhcmVudCBQSUQ6ICVkXG4iLCBnZXRwcGlkKCkpOwogICAgICAgIHByaW50ZigiW0NoaWxkXSBQZXJmb3JtaW5nIHRhc2sgYW5kIGV4aXRpbmcuLi5cbiIpOwogICAgICAgIHNsZWVwKDIpOyAvLyBTaW11bGF0ZSB3b3JrCiAgICAgICAgZXhpdCgwKTsgLy8gRXhpdCBzeXN0ZW0gY2FsbAogICAgfQogICAgZWxzZSB7CiAgICAgICAgLy8gUGFyZW50IFByb2Nlc3MKICAgICAgICBwcmludGYoIlxuW1BhcmVudF0gQ3JlYXRlZCBjaGlsZCB3aXRoIFBJRDogJWRcbiIsIHBpZCk7CiAgICAgICAgcHJpbnRmKCJbUGFyZW50XSBXYWl0aW5nIGZvciBjaGlsZCB0byBmaW5pc2guLi5cbiIpOwogICAgICAgIAogICAgICAgIC8vIHdhaXQoKSBzeXN0ZW0gY2FsbCB0byB3YWl0IGZvciBjaGlsZCBjb21wbGV0aW9uCiAgICAgICAgd2FpdChOVUxMKTsgCiAgICAgICAgCiAgICAgICAgcHJpbnRmKCJcbltQYXJlbnRdIENoaWxkIGZpbmlzaGVkLlxuIik7CiAgICAgICAgcHJpbnRmKCJbUGFyZW50XSBFeGl0aW5nLlxuIik7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K