【问题标题】:How to open a new xterm window and run a command on that window using fork-exec calls ? ( C program only)如何使用 fork-exec 调用打开一个新的 xterm 窗口并在该窗口上运行命令? (仅限 C 程序)
【发布时间】: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


【解决方案1】:

没有什么能阻止你再次调用fork - 一个进程可以有任意数量的子、孙等...

在这种特殊情况下,您需要子代 fork 并使用您的 man 命令创建 exec "/bin/xterm" 的孙代。并在它们完成时进行清理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多