【发布时间】:2017-01-27 08:13:48
【问题描述】:
基本上,我正在学习 pipe 和 dup 系统调用。
我想从父进程获取一个命令名(如 ls、cd、mkdir 等)作为输入并使用管道将其传递给子进程,子进程应该打开一个新的 xterm 窗口 并在这个新的 xterm 窗口中显示管道中记录的命令的手册页。
问题在于 exec 改变了子进程的整个进程映像,因此之后编写的任何代码都将被忽略(如果 exec 成功)。因此,如果我将子进程执行到“/bin/xterm”,那么任何 exec 都会调用子块中的被删除,因为进程映像更改为 xterm。
那么我该如何调用 /bin/man?
【问题讨论】:
-
不清楚您要的是什么。您想要一种执行 /bin/man 的方法,还是想要一种将信息传递给您创建的子进程的方法?
-
你可以运行
'/usr/bin/xterm' '-e' '/bin/man' 'command name you read from pipe here'并让 xterm 为你做第二次 fork & exec
标签: c pipe fork system file-descriptor