Запустите простую команду оболочки - PullRequest
6 голосов
/ 11 августа 2011

Какую функцию WinAPI лучше всего использовать, когда вы хотите выполнить только простую команду оболочки, такую ​​как hg > test.txt?

Ответы [ 3 ]

7 голосов
/ 11 августа 2011

Чтобы просто запустить файл, тогда ShellExecute() и CreateProcess() являются лучшими вариантами.

Поскольку вы хотите перенаправить вывод в файл / запустить команду оболочки, это усложняет ситуацию ...

Перенаправление вывода является функцией командной строки, и поэтому команда, которую вы хотите выполнить, должна быть передана cmd.exe (в NT / XP +) с передачей /c и ваша команда в качестве параметров (либо 1013 * или CreateProcess сделает).

cmd /c "ipconfig >c:\debug\blah.txt"

Однако лучший способ - это использовать CreateProcess() и создать свои собственные каналы для связи со стандартными и стандартными программами (это все, что cmd делает внутри)

2 голосов
/ 11 августа 2011

Вы можете использовать ShellExecute(), но почему бы сначала не попробовать system()? Я не уверен, что ShellExecute() действительно может выполнять трубопровод или перенаправление. Существует также CreateProcess(), но это требует немного больше работы. CreateProcess() дает вам лучший контроль.

1 голос
/ 11 августа 2011

Существует два способа подачи команд: способ оболочки Windows и способ командной строки.

Оболочка Windows выдает команды, выполняя глаголы для файлов.Глаголы связаны с типами файлов в реестре.Примеры общих глаголов: Open и Print .WinAPI для использования это ShellExecute .Оболочка Windows не помогает направить вывод процесса в файл.Вы можете сделать это, используя CreateProcess , но это немного задействовано .

Способ командной строки - использовать функцию system .

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