子进程的返回值c

时间:2017-04-22 03:41:22

标签: c fork named-pipes named

我需要帮助返回"状态代码"从我的子程序回到父程序,它将检查状态代码,打印代码,并退出父程序。这是一个课堂项目,所以我会在这里提供一些相关的代码,但我不会因为显而易见的原因发布整个项目。

我已经通过exec分叉并创建了子进程。父进行一些奇特的数学运算并使用命名管道将数据推送到子进程。孩子做了一些更奇特的数学。当我使用关键字时,孩子需要返回它在结束时将花式数学返回到父级的次数,其中父级将看到这一点,打印出返回的数字,然后退出父级。

<script src="https://d3js.org/d3.v4.js"></script>
<svg></svg>

第二个c程序只是一个简单的管道读取,做了一些更精彩的数学运算,并且在我想要返回数字的地方放置了返回语句。

据我了解,有一种方法可以传递子程序的返回值,但我似乎无法理解如何。我添加了一段我发现的代码,但我似乎无法让它工作。我读过它,但也许我错过了什么?

请忽略任何语法或结构问题。

1 个答案:

答案 0 :(得分:5)

您尝试通过status功能阅读WIFEXITED,但您永远不会给它一个值。尝试读取未初始化的值会调用undefined behavior

您需要调用wait函数,该函数告诉父母等待孩子完成并接收其返回码:

wait(&status);
if (WIFEXITED(status)){
      int returned = WEXITSTATUS(status);
      printf("exited normally with status %d\n",returned);
}