linux记录所有进程返回值,Linux获取进程返回值

本文通过示例代码介绍了如何在Linux环境中使用C语言创建并管理进程。通过`system()`函数启动两个进程,模拟Father和Son,Son进程睡眠10秒后返回值5。使用`WEXITSTATUS()`宏获取进程的返回值,展示了如何判断子进程是否正常退出并获取其退出状态。
摘要由CSDN通过智能技术生成

受人之托写一个Linux小Demo,大致意思是这样的:

创建进程,并等待进程结束,获取进程返回值。

创建进程来说,fork()就可以了,比较简单这里就不来了。我模拟2个C程序,依次启动就相当于创建了2个进程(就不再fork了)。

等待进程结束的话,为了相对直观,令第二个进程Son睡眠10秒(顺便说一下,我把第一个进程写成了Father,第二个写成了Son,虽然没有父子关系,不过Son是Father负责启动的,哈哈)

最后一步是获取进程返回值,这里需要用到WEXITSTATUS。

WIFEXITED(status) 用来指出子进程是否为正常退出的,如果是,它会返回一个非零值。

当WIFEXITED返回非零值时,我们可以用这个宏来提取子进程的返回值,如果子进程调用exit(5)退出,WEXITSTATUS(status)就会返回5;如果子进程调用exit(7),WEXITSTATUS(status)就会返回7。请注意,如果进程不是正常退出的,也就是说,WIFEXITED返回0,这个值就毫无意义。

这里模拟的时候,直接令程序返回一个int值。

以下是程序代码:

Father.c

#include

#include

int main(int argc, char* argv)

{

printf("Father run\n");

int n = system("./Son");

printf("Son return value = %d\n", WEXITSTATUS(n));

return 0;

}

Son.c

#include

int main(int argc, char* argv)

{

printf("Son run\n");

sleep(10);

return 5;

}

编译运行:

gcc Father.c -o Father

gcc Son.c -o Son

结果如图:

[caption id=”attachment_206” align=”alignnone” width=”203”]

return.jpg 程序执行结果[/caption]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值