Запустите новую программу, используя exec в новом терминале - PullRequest
0 голосов
/ 25 января 2012

У меня есть программа с именем pgm1 , которая создает новый процесс с использованием fork .

Затем в этом процессе я запускаюновая программа ( pgm2 ) с использованием следующей команды: execv (exec_path_name, argv) .

Но дело в том, что с этим методомУ меня есть оба выхода в одном терминале.Некоторое время я искал, и единственное решение, которое я нашел, было следующее:

Так что мой вопрос действительно прост, есть ли более простой способ сделать это?

Заранее спасибо!

PS: Distro -Ubuntu 11.10 32bit

1 Ответ

1 голос
/ 25 января 2012

Я могу думать о двух возможных решениях:

  1. Делать правильные вещи (TM) и отправлять вывод в файл: Каждый процесс может использовать разныефайл, обеспечивающий четкое разделение выходных данных и лучшее ведение записей.В качестве бонуса вы также должны увидеть улучшение производительности - вывод терминала является вычислительно дорогим, даже в наши дни ...

  2. Запустите эмулятор терминала с правильными аргументами: Большинство терминальных эмуляторов предоставляют способ выполнения определенной программы вместо оболочки.Например, xterm:

    $ xterm top
    

    Это запустит top в экземпляре xterm без оболочки.Выход из top также завершает работу окна xterm.

    Если ваш эмулятор терминала поддерживает это, вы можете использовать его, просто изменив аргументы, переданные в execv().Конечно, в этом случае вы фактически будете выполнять эмулятор терминала вместо вашей программы, которая будет , а затем вызывать ваш собственный процесс.

    Имейте в виду, что в зависимости от эмулятора терминала,любые дескрипторы открытого файла могут быть неправильно переданы вашей программе - терминал будет по крайней мере искажать стандартные файловые дескрипторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...