【发布时间】:2014-05-01 23:53:10
【问题描述】:
我使用函数 (L) 通过execlp() 执行另一个程序 (K)。
在K程序中,将结果写入流1:
write(1, (char *)&o, sizeof(int));
既然execlp()之后,L的剩余部分就不会被执行了,怎么才能得到写在stream 1中的结果呢?
不要问我为什么要这样做。这是一个项目的要求。
我听从了你们的建议,但现在的问题是,K 程序获取参数的方式来自流(一个标准流,另一个流),我正在使用管道将参数写入相应的流(已经完成由父母)。
在子 exec 之后,在父部分,我从流 0 中读取(K 程序将其结果写回流 1)。但我能得到的是父进程写入流的内容,而不是 K 程序写回的内容。 怎么了?我需要添加另一个管道吗?
谢谢!!
【问题讨论】:
-
你创建了管道;你分叉;孩子整理它的管道(将管道连接到正确的位置并关闭文件描述符)并执行 K;父进程整理其管道(关闭足够多的文件描述符)并从 K 读取响应。
-
有一本关于 Linux 编程的书。我建议你得到它
-
@staticx:只有一本书?你会建议哪个?也许The Linux Programming Interface Handbook?还是史蒂文斯Advanced Programming in the Unix Environment?或者...
-
@Jonathan: amazon.com/gp/aw/d/…
-
staticx 建议 Linux Programming By Example,日期为 1999 年。我还没有读过它。它在亚马逊上得到了很好的评价。我唯一担心的是日期,但基本面没有太大变化。 (LPI 书是 2010 年的;史蒂文斯是 2013 年的。)