0

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

4

1 回答 1

1

不,不要那样做——即使它以某种方式起作用。您需要使用共享内存或一些 IPC,如管道。 Wait使用返回的值来指示孩子终止的原因(例如信号),你不应该搞乱它。您在 parent 中看到的值与您用作退出代码的值不同。您没有说您使用的是什么操作系统,而是来自 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
于 2013-06-05T20:28:29.517 回答