将longed值从分叉进程传递给其父进程

时间:2013-06-05 20:24:30

标签: c process operating-system fork systems-programming

我想将子进程中的float, double, long类型的值传递给父进程。 我首先分叉父,然后等待孩子结束它的工作,在这里我希望孩子返回一个大的值(long int类型)。 我找到了一种使用wait(int*)exit(int)传递正常int值的方法 但我想传递长值而不是int。

1 个答案:

答案 0 :(得分:1)

不,不要这样做 - 即使它以某种方式工作。您需要使用共享内存或某些IPC,如管道。 Wait使用返回的值来指示孩子终止的原因(例如一个信号),你不应该弄乱它。您在父级中看到的值与您用作退出代码的值不同。您没有说明您正在使用的操作系统,而是来自Linux手册页:

  

exit()函数导致正常的进程终止以及status&的值。 0377将返回父级(请参阅wait(2))。


基本流程很简单。

declare pipe.

fork()

if (parent)
    close write end of pipe
    read loop until eof
    close read end of pipe
    wait on child

if (child)
    close read end of pipe
    write what you are going to write to pipe
    close write end of pipe
    exit