#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>
void sum_of_digits()
{
int num, sum = 0, rem;
while (num != 0) {
rem = num % 10;
sum += rem;
num /= 10;
}
printf("Sum of Digits: %d\n", sum
); }
int main(int argc, char *argv[])
{
pid_t c1, c2;
if (argc
> 1 && strcmp(argv
[1], "sum") == 0) { sum_of_digits();
return 0;
}
c1 = fork();
if (c1 == 0) {
execlp("echo", "echo", "Happy new year", NULL);
_exit(1);
}
else {
wait(NULL);
c2 = fork();
if (c2 == 0) {
execlp(argv[0], argv[0], "sum", NULL);
_exit(1);
}
else {
wait(NULL);
printf("Parent exiting …good bye....\n"); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvd2FpdC5oPgojaW5jbHVkZSA8c3RyaW5nLmg+Cgp2b2lkIHN1bV9vZl9kaWdpdHMoKQp7CiAgICBpbnQgbnVtLCBzdW0gPSAwLCByZW07CgogICAgcHJpbnRmKCJFbnRlciB0aGUgbnVtYmVyOiAiKTsKICAgIHNjYW5mKCIlZCIsICZudW0pOwoKICAgIHdoaWxlIChudW0gIT0gMCkgewogICAgICAgIHJlbSA9IG51bSAlIDEwOwogICAgICAgIHN1bSArPSByZW07CiAgICAgICAgbnVtIC89IDEwOwogICAgfQoKICAgIHByaW50ZigiU3VtIG9mIERpZ2l0czogJWRcbiIsIHN1bSk7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKICAgIHBpZF90IGMxLCBjMjsKCiAgICBpZiAoYXJnYyA+IDEgJiYgc3RyY21wKGFyZ3ZbMV0sICJzdW0iKSA9PSAwKSB7CiAgICAgICAgc3VtX29mX2RpZ2l0cygpOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGMxID0gZm9yaygpOwoKICAgIGlmIChjMSA9PSAwKSB7CiAgICAgICAgZXhlY2xwKCJlY2hvIiwgImVjaG8iLCAiSGFwcHkgbmV3IHllYXIiLCBOVUxMKTsKICAgICAgICBfZXhpdCgxKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHdhaXQoTlVMTCk7CgogICAgICAgIGMyID0gZm9yaygpOwoKICAgICAgICBpZiAoYzIgPT0gMCkgewogICAgICAgICAgICBleGVjbHAoYXJndlswXSwgYXJndlswXSwgInN1bSIsIE5VTEwpOwogICAgICAgICAgICBfZXhpdCgxKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHdhaXQoTlVMTCk7CiAgICAgICAgICAgIHByaW50ZigiUGFyZW50IGV4aXRpbmcg4oCmZ29vZCBieWUuLi4uXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K