Я знаю, что это не тот ответ, который вы ищете, но есть ли конкретная причина, почему вы делаете это? Причина, по которой я спрашиваю, состоит в том, что большинство, если не все действия, которые обычно выполняются с system()
или execv()
, доступны в библиотеках Windows или Unix и безопаснее, быстрее и с меньшей вероятностью страдают от косвенных ошибки. Под этим я подразумеваю, например, когда PATH
меняется и вдруг ваш код перестает работать.
Если вы передаете строку, полностью или частично, и запускаете ее, вы также оставляете себя открытым для пользователя, который получает доступ к системе, вводя команду, которая может быть вредной. Например. представьте, что вы реализовали поиск файлов, используя find /home -name
, и ваши пользователи вводят:
"%" -exec rm {} \;
Ой!