#include <stdio.h>
#include <sys/types.h>
#include <unistd.h> // Include this for sleep() and fork()
int main( void )
{
pid_t pid;
printf ( "BEFORE FORK\n " ) ;
pid = fork( ) ; // Fork system call
if ( pid > 0 )
{
// Parent process code
sleep( 1 ) ; // Allow child to execute first
printf ( "PARENT_PID:%d RPID:%d, CHILD PID:%d \n " , getpid( ) , getppid( ) , pid) ;
}
else if ( pid == 0 )
{
// Child process code
printf ( "CHILD_PID:%d RPID:%d\n " , getpid( ) , getppid( ) ) ;
}
else
{
// Error occurred in fork()
printf ( "FORK ERROR\n " ) ;
}
printf ( "BOTH PROCESS CONTINUE FROM HERE\n " ) ;
return 0 ; // Return statement for main
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPiAvLyBJbmNsdWRlIHRoaXMgZm9yIHNsZWVwKCkgYW5kIGZvcmsoKQoKaW50IG1haW4odm9pZCkKewogICAgcGlkX3QgcGlkOwogICAgcHJpbnRmKCJCRUZPUkUgRk9SS1xuIik7CiAgICBwaWQgPSBmb3JrKCk7IC8vIEZvcmsgc3lzdGVtIGNhbGwKCiAgICBpZiAocGlkID4gMCkKICAgIHsKICAgICAgICAvLyBQYXJlbnQgcHJvY2VzcyBjb2RlCiAgICAgICAgc2xlZXAoMSk7IC8vIEFsbG93IGNoaWxkIHRvIGV4ZWN1dGUgZmlyc3QKICAgICAgICBwcmludGYoIlBBUkVOVF9QSUQ6JWQgUlBJRDolZCwgQ0hJTEQgUElEOiVkIFxuIiwgZ2V0cGlkKCksIGdldHBwaWQoKSwgcGlkKTsKICAgIH0KICAgIGVsc2UgaWYgKHBpZCA9PSAwKQogICAgewogICAgICAgIC8vIENoaWxkIHByb2Nlc3MgY29kZQogICAgICAgIHByaW50ZigiQ0hJTERfUElEOiVkIFJQSUQ6JWRcbiIsIGdldHBpZCgpLCBnZXRwcGlkKCkpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIC8vIEVycm9yIG9jY3VycmVkIGluIGZvcmsoKQogICAgICAgIHByaW50ZigiRk9SSyBFUlJPUlxuIik7CiAgICB9CgogICAgcHJpbnRmKCJCT1RIIFBST0NFU1MgQ09OVElOVUUgRlJPTSBIRVJFXG4iKTsKCiAgICByZXR1cm4gMDsgLy8gUmV0dXJuIHN0YXRlbWVudCBmb3IgbWFpbgp9Cg==