#include <stdio.h>
#include <stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
int main( ) {
pid_t pid = fork( ) ;
if ( pid < 0 ) {
}
else if ( pid == 0 ) {
printf ( "Child process (PID: %d) is runningg.....\n " , getpid
( ) ) ; sleep( 2 ) ; // Simulate some work
printf ( "Child process (PID: %d) is exiting with status 42.\n " , getpid
( ) ) ; }
else {
int status;
pid_t child_pid = wait( & status) ;
if ( WIFEXITED( status) ) {
printf ( "Parent process detected child (PID: %d) exited with status: %d\n " , child_pid
, WEXITSTATUS
( status
) ) ; }
printf ( "Parent process (PID: %d) is exiting normally.\n " , getpid
( ) ) ; }
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGU8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZTxzeXMvd2FpdC5oPgogI2luY2x1ZGU8dW5pc3RkLmg+CiBpbnQgbWFpbigpIHsgCnBpZF90IHBpZCA9IGZvcmsoKTsKIGlmIChwaWQgPCAwKSB7IApwZXJyb3IoIkZvcmsgZmFpbGVkIik7IGV4aXQoMSk7IAogfSAKZWxzZSBpZiAocGlkID09IDApIHsKcHJpbnRmKCJDaGlsZCBwcm9jZXNzIChQSUQ6ICVkKSBpcyBydW5uaW5nZy4uLi4uXG4iLCBnZXRwaWQoKSk7CiBzbGVlcCgyKTsgLy8gU2ltdWxhdGUgc29tZSB3b3JrIApwcmludGYoIkNoaWxkIHByb2Nlc3MgKFBJRDogJWQpIGlzIGV4aXRpbmcgd2l0aCBzdGF0dXMgNDIuXG4iLCBnZXRwaWQoKSk7CiBleGl0KDQyKTsKIH0gCmVsc2UgewppbnQgc3RhdHVzOwogcGlkX3QgY2hpbGRfcGlkID0gd2FpdCgmc3RhdHVzKTsKIGlmIChXSUZFWElURUQoc3RhdHVzKSkgeyAKcHJpbnRmKCJQYXJlbnQgcHJvY2VzcyBkZXRlY3RlZCBjaGlsZCAoUElEOiAlZCkgZXhpdGVkIHdpdGggc3RhdHVzOiAlZFxuIiwgY2hpbGRfcGlkLCBXRVhJVFNUQVRVUyhzdGF0dXMpKTsKfSAKcHJpbnRmKCJQYXJlbnQgcHJvY2VzcyAoUElEOiAlZCkgaXMgZXhpdGluZyBub3JtYWxseS5cbiIsIGdldHBpZCgpKTsgCmV4aXQoMCk7CiB9CiB9CiAK