#include <iostream>
#include <sys/types.h>
#include <unistd.h>
using std:: cout ;
using std:: endl ;
void function( )
{
pid_t pid1, pid2, pid3, pid4;
pid1 = fork( ) ;
if ( pid1 == 0 )
{
cout << "hi " << getpid( ) << " " << getppid( ) << endl; /*first child process should print "hi"*/
}
pid2 = fork( ) ;
cout << "hell " << getpid( ) << " " << getppid( ) << endl;
pid3 = fork( ) ;
cout << "how " << getpid( ) << " " << getppid( ) << endl;
pid4 = fork( ) ;
if ( pid1 == 0 && pid2 == 0 && pid3 == 0 && pid4 == 0 ) {
return ; /* final child process should exit from the system with out doing anything*/
} else if ( pid1 > 0 && pid2 > 0 && pid3 > 0 && pid4 > 0 ) {
cout << "areyou " << getpid( ) << " " << getppid( ) << endl;
}
}
int main( ) {
/* and the root process should print "are you"*/
function( ) ;
sleep( 100 ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KCnVzaW5nIHN0ZDo6Y291dDsKdXNpbmcgc3RkOjplbmRsOwoKdm9pZCBmdW5jdGlvbigpCnsgICAgICAgICAgICAgICAgICAgICAgICAKICAgIHBpZF90IHBpZDEsIHBpZDIsIHBpZDMsIHBpZDQ7CiAgICBwaWQxID0gZm9yaygpOyAKICAgIGlmIChwaWQxID09IDApCiAgICB7CiAgICAgICAgY291dCA8PCAiaGkgIiA8PCBnZXRwaWQoKSA8PCAiICIgPDwgZ2V0cHBpZCgpPDwgZW5kbDsgLypmaXJzdCBjaGlsZCBwcm9jZXNzIHNob3VsZCBwcmludCAiaGkiKi8KICAgIH0KICAgIHBpZDIgPSBmb3JrKCk7CiAgICBjb3V0IDw8ICJoZWxsICIgPDwgZ2V0cGlkKCkgPDwiICIgPDwgZ2V0cHBpZCgpIDw8IGVuZGw7CiAgICBwaWQzID0gZm9yaygpOwogICAgY291dCA8PCAiaG93ICIgIDw8IGdldHBpZCgpIDw8IiAiPDxnZXRwcGlkKCkgPDwgZW5kbDsKICAgIHBpZDQgPSBmb3JrKCk7CiAgICAKICAgIGlmIChwaWQxID09IDAgJiYgcGlkMiA9PSAwICYmIHBpZDMgPT0gMCAmJiBwaWQ0ID09IDApewogICAgICAgIHJldHVybjsvKiBmaW5hbCBjaGlsZCBwcm9jZXNzIHNob3VsZCBleGl0IGZyb20gdGhlIHN5c3RlbSB3aXRoIG91dCBkb2luZyBhbnl0aGluZyovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIH0gZWxzZSBpZiAocGlkMSA+IDAgJiYgcGlkMiA+IDAgJiYgcGlkMyA+IDAgJiYgcGlkNCA+IDApewogICAgICAgIGNvdXQgPDwgImFyZXlvdSAiPDwgZ2V0cGlkKCkgPDwgIiAgIjw8IGdldHBwaWQoKSA8PCBlbmRsOwogICAgfQp9CgogaW50IG1haW4oKSB7CiAvKiBhbmQgdGhlIHJvb3QgcHJvY2VzcyBzaG91bGQgcHJpbnQgICJhcmUgeW91IiovCiAgICBmdW5jdGlvbigpOwogICAgc2xlZXAoMTAwKTsKfQ==