как получить операторы echo и статус выполнения из сценария оболочки в программу на c ++ - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть сценарий оболочки, такой как:

#!/bin/bash
echo "my string"
return 1

И у меня есть код на C ++, в котором я хочу получить как оператор (ы) echo, так и статус exe c. Я нашел несколько примеров, когда мы можем использовать popen() или system(), оба способа служат одному требованию, но не оба. Любые предложения, как это сделать?

1 Ответ

0 голосов
/ 24 апреля 2020

fork() + exec() будет довольно стандартным способом запуска другого исполняемого файла ( пожалуйста не когда-либо используйте system(), это безопасность кошмар ). Чтобы получить стандартный поток вывода ошибок / стандартных ошибок из порожденного процесса, родительский процесс настроил бы pipe s для подключения к этим потокам и их чтения. Что касается кода выхода, который вы можете получить через waitpid() после завершения дочернего процесса (вы получите сигнал SIG_CHILD, поэтому убедитесь, что вы установили обработчик сигнала для этого).

Я рекомендую Прочитайте Расширенное программирование в среде UNIX, 3-е издание .

...