我需要帮助返回"状态代码"从我的子程序回到父程序,它将检查状态代码,打印代码,并退出父程序。这是一个课堂项目,所以我会在这里提供一些相关的代码,但我不会因为显而易见的原因发布整个项目。
我已经通过exec分叉并创建了子进程。父进行一些奇特的数学运算并使用命名管道将数据推送到子进程。孩子做了一些更奇特的数学。当我使用关键字时,孩子需要返回它在结束时将花式数学返回到父级的次数,其中父级将看到这一点,打印出返回的数字,然后退出父级。
<script src="https://d3js.org/d3.v4.js"></script>
<svg></svg>
第二个c程序只是一个简单的管道读取,做了一些更精彩的数学运算,并且在我想要返回数字的地方放置了返回语句。
据我了解,有一种方法可以传递子程序的返回值,但我似乎无法理解如何。我添加了一段我发现的代码,但我似乎无法让它工作。我读过它,但也许我错过了什么?
请忽略任何语法或结构问题。
答案 0 :(得分:5)
您尝试通过status
功能阅读WIFEXITED
,但您永远不会给它一个值。尝试读取未初始化的值会调用undefined behavior。
您需要调用wait
函数,该函数告诉父母等待孩子完成并接收其返回码:
wait(&status);
if (WIFEXITED(status)){
int returned = WEXITSTATUS(status);
printf("exited normally with status %d\n",returned);
}