posix_spawn сценарий оболочки, проблемы с передачей аргументов - PullRequest
0 голосов
/ 10 февраля 2012

Мне нужна возможность использовать некоторые средства управления процессами, предоставляемые posix_spawn (), такие как suspend / resume / kill и т. Д., То, что system () не дает мне. Поэтому используйте следующий вызов posix_spawn () для запуска сценария оболочки из программы на c ++:

 int result = posix_spawn(&spawnedPid, processExecutable, 0, 0, argumentList, 0);

, где processExecutable - "foo.sh", а аргументList - {"бар", 0,0,0}; Процесс foo.sh запускается просто отлично, за исключением части argumentsList. Если я сделаю что-то вроде «echo $ 1» в foo.sh, я получу пустую строку. Если я запускаю бинарный файл тем же способом, аргументы в порядке, и я могу получить к ним доступ через argv []. Есть ли что-то, что я должен сделать по-другому, чтобы передать аргументы в foo.sh?

1 Ответ

0 голосов
/ 10 февраля 2012

Позор мне, параметр argumentsList функции posix_spawn () основан на 0, поэтому echo $ 1 фактически выдает аргумент argumentsList [1], который, естественно, равен 0. Случай закрыт.

...