#include <stdio.h>
#include <sys/types.h>
#include <unistd.h> // Include this for fork(), getpid(), getppid(), and sleep()
int main( void )
{
pid_t pid;
printf ( "BEFORE FORK\n " ) ;
pid = fork( ) ;
if ( pid > 0 ) {
// Parent process
sleep( 0 ) ; // This is unnecessary, but you can remove it or leave it as is
printf ( "PARENT_PID: %d, RPID: %d, CHILD PID: %d\n " , getpid( ) , getppid( ) , pid) ;
}
else if ( pid == 0 ) {
// Child process
printf ( "CHILD_PID: %d, RPID: %d\n " , getpid( ) , getppid( ) ) ;
}
else {
// Error in fork()
printf ( "FORK ERROR\n " ) ;
}
printf ( "BOTH PROCESSES CONTINUE FROM HERE\n " ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gSW5jbHVkZSB0aGlzIGZvciBmb3JrKCksIGdldHBpZCgpLCBnZXRwcGlkKCksIGFuZCBzbGVlcCgpCgppbnQgbWFpbih2b2lkKQp7CiAgICBwaWRfdCBwaWQ7CiAgICBwcmludGYoIkJFRk9SRSBGT1JLXG4iKTsKICAgIHBpZCA9IGZvcmsoKTsKCiAgICBpZiAocGlkID4gMCkgewogICAgICAgIC8vIFBhcmVudCBwcm9jZXNzCiAgICAgICAgc2xlZXAoMCk7ICAvLyBUaGlzIGlzIHVubmVjZXNzYXJ5LCBidXQgeW91IGNhbiByZW1vdmUgaXQgb3IgbGVhdmUgaXQgYXMgaXMKICAgICAgICBwcmludGYoIlBBUkVOVF9QSUQ6ICVkLCBSUElEOiAlZCwgQ0hJTEQgUElEOiAlZFxuIiwgZ2V0cGlkKCksIGdldHBwaWQoKSwgcGlkKTsKICAgIH0KICAgIGVsc2UgaWYgKHBpZCA9PSAwKSB7CiAgICAgICAgLy8gQ2hpbGQgcHJvY2VzcwogICAgICAgIHByaW50ZigiQ0hJTERfUElEOiAlZCwgUlBJRDogJWRcbiIsIGdldHBpZCgpLCBnZXRwcGlkKCkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgLy8gRXJyb3IgaW4gZm9yaygpCiAgICAgICAgcHJpbnRmKCJGT1JLIEVSUk9SXG4iKTsKICAgIH0KCiAgICBwcmludGYoIkJPVEggUFJPQ0VTU0VTIENPTlRJTlVFIEZST00gSEVSRVxuIik7CgogICAgcmV0dXJuIDA7Cn0K