"Волшебные" символы перенаправления вывода <, > и | в командных строках вида:
myprogram.exe | sort > output.txtобрабатываются командным интерпретатором CMD.EXE; они не встроены в функцию
CreateProcess
.Это должно быть очевидно. Командная строка выше создаёт два процесса; описатель которого из них нужно возвращать
CreateProcess
?Если вы передадите такую командную строку в функцию
CreateProcess
, то она просто передаст её "как есть" в указанную программу. Т.е. программа (myprogram.exe) увидит параметры вида "| sort > output.txt
". Аналогичным образом поступит и функция ShellExecute
. Если вы хотите, чтобы эти символы интерпретировались бы как операторы перенаправления вывода, то вам нужно передать их тому, кто будет их интерпретировать таким образом:
cmd.exe /C myprogram.exe | sort > output.txtПоскольку различные командные интерпретаторы используют разный синтаксис, то вам нужно явно указывать, какой интерпретатор вы хотите использовать.
Прим.пер.: стандартно в современных Windows есть CMD и PowerShell. В старых версиях Windows есть COMMAND.COM. Кроме того, существуют узкоспециализированные CScript, netsh, WMIC.
Если командная строка поступает к вам от пользователя, то вы, вероятно, захотите использовать переменную окружения
COMSPEC
для запуска командного интерпретатора - чтобы дать пользователю контроль над тем, какой командный интерпретатор использовать для его командной строки.Читать далее: больше материала по CreateProcess.
Комментариев нет:
Отправить комментарий
Можно использовать некоторые HTML-теги, например:
<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>
Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.
Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.
Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.
Примечание. Отправлять комментарии могут только участники этого блога.