#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main( void )
{
int ret;
for ( int count= 0 ; count < 2 ; count++ ) {
ret = fork( ) ;
switch ( ret) {
case - 1 :
printf ( "fork error on pid %d run %d\n " , ( int ) getpid( ) , count) ;
break ;
case 0 :
printf ( "child pid %d run %d says hi!\n " , ( int ) getpid( ) , count) ;
break ;
default :
printf ( "parent %d created child %d on run %d\n " , ( int ) getpid( ) , ret, count) ;
break ;
}
while ( wait( 0 ) > 0 ) ;
}
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN5cy93YWl0Lmg+CgoKaW50IG1haW4odm9pZCkKewogICAgaW50IHJldDsKCiAgICBmb3IoaW50IGNvdW50PTA7IGNvdW50IDwgMjsgY291bnQrKykgewoJcmV0ID0gZm9yaygpOwogICAgICAgIHN3aXRjaChyZXQpIHsKICAgICAgICAgICAgY2FzZSAtMToKICAgICAgICAgICAgICAgIHByaW50ZigiZm9yayBlcnJvciBvbiBwaWQgJWQgcnVuICVkXG4iLCAoaW50KWdldHBpZCgpLCBjb3VudCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgcHJpbnRmKCJjaGlsZCBwaWQgJWQgcnVuICVkIHNheXMgaGkhXG4iLCAoaW50KWdldHBpZCgpLCBjb3VudCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKCQlwcmludGYoInBhcmVudCAlZCBjcmVhdGVkIGNoaWxkICVkIG9uIHJ1biAlZFxuIiwgKGludClnZXRwaWQoKSwgcmV0LCBjb3VudCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgd2hpbGUod2FpdCgwKSA+IDApOwogICAgfQogICAgcmV0dXJuIDA7Cn0K