Какую команду использовать для выполнения программы в коде C ++ [Linux]? - PullRequest
2 голосов
/ 08 мая 2011

Привет,

Я новичок в C ++ и Linux.Ищу команду, которую я использую для выполнения 3 исполняемых программ (exe / bin) в моем исходном коде, и вот что я хочу сделать:
1. Узнать, успешно ли выполнен процесс (возвращаемое значение)
2Знать идентификатор процесса
3. Убить процесс

Я пробовал System (), но он не возвращается при ошибке и без PID, также небезопасно.Я быстро взглянул на fork () - exec (), но возможно ли не иметь отношения родитель-потомок?Кроме того, я заглянул в справочные страницы, но не понял: (

Пожалуйста, посоветуйте мне, какую команду я буду использовать.

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

Ответы [ 3 ]

3 голосов
/ 08 мая 2011

Вы смотрели на popen ()? Это может быть путь. Попробуйте справочную страницу.

2 голосов
/ 08 мая 2011

system () возвращает код завершения дочернего процесса так же, как wait () ((-1 при ошибке или 127, если не удалось)порождает процесс оболочки).

Если вам нужно знать PID дочернего элемента и запускать его асинхронно, fork () , за которым следует exec () , обычно этопутьВместо этого используйте popen () , если вы хотите общаться с дочерним процессом по каналу.

Чтобы ослабить внутренние отношения родитель / потомок, вам, вероятно, придется daemonize дочерний процесс.

1 голос
/ 08 мая 2011

По определению, у вас всегда есть отношение родитель-потомок при запуске новых программ (кроме случаев, когда они заменяют вашу собственную программу в текущем процессе; вы получаете это при вызове execl без fork ing первый). Функции, подобные system и popen, также вызывают fork и один из вариантов exec.

Взгляните на Fork and Exec tutorial от Кембриджского университета, это довольно просто и точно. Также использует C ++. Обратите внимание, что все соответствующие вызовы (fork, execl, wait) являются функциями C POSIX.

...