Это связано с: Как прочитать результаты системного вызова () в C ++?
Я пытаюсь сделать то же самое, только что моей программе нужно передать команду «несколько параметров с пробелами». Мне нужен вывод командной строки и код выхода из процесса.
Пример: пример с Textpad. Приложение, которое я действительно использую, печатает на stdout.
<code>
string command1 = "\"C:\Program Files\TextPad 5\Textpad.exe\" C:\readme0.txt";
string command2 = "\"C:\Program Files\TextPad 5\Textpad.exe\" \"C:\read me2.txt\"";
cout << system(command1.c_str()) << endl;
cout << system(command1.c_str()) << endl;
Выход:
0
«C: \ Program» не распознается как внутренняя или внешняя команда,
работающая программа или командный файл.
1
Первый вызов системы проходит, а второй не удается с указанной выше ошибкой. _popen в Windows работает аналогично в Windows, так что тут никакой помощи. Я легко могу сделать это в Linux, так как могу использовать пробелы в параметрах без использования кавычек.
Альтернативой является написание огромного количества непросплатформенного кода, как указано здесь:
http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx
Но если я хочу этого избежать, есть ли альтернативы system () и _popen () в Windows?
Спасибо!