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