2017-01-27 5 views
1

В основном, я изучаю труба и dup системные вызовы.Как открыть новое окно xterm и запустить команду в этом окне с помощью вызовов fork-exec? (Только для программы C)

Я хочу взять имя-команду с (например, Ls, компакт-диск, MkDir и т.д.) в качестве входных данных из родительского процесса и передать его дочерний процесс с помощью трубы, дочерний процесс должен открыть окно нового XTERM и покажите страницу руководства команды, записанной в трубе, в этом новом окне xterm.

Проблема заключается в том, что exec изменяет весь образ процесса ребенка, поэтому любой написанный код просто игнорируется (если exec был успешным). Поэтому, если я выполняю дочерний процесс на «/ bin/xterm», тогда любой exec вызовы в дочернем блоке удаляются, так как образ процесса изменяется на xterm.

Так как я могу позвонить/bin/man?

+1

Непонятно, о чем вы просите. Вам нужен способ для exec/bin/man или вы хотите передать информацию дочернему процессу, который вы создали? – cegfault

+0

Вы можете просто запустить имя команды ''/usr/bin/xterm '' -e ''/bin/man '', которое вы читаете из канала здесь, и пусть xterm сделает второй fork & exec для вас – Useless

+0

Большое спасибо, он работал, я больше поработал над тем, как работает exec после его чтения. – 1c3b3r6

ответ

0

Существует ничего не мешает вам вызов fork снова - процесс может иметь любое количество детей, внуки и т.д. ...

В данном конкретном случае вам нужен ребенок fork и создать внук, которые exec «/ бен/xterm "с вашей командой. И также очищайте их, когда они заканчивают.