Чтение сообщения об ошибке команды system () - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь выполнить приложение (компилятор Coq) с помощью команды C ++ system () на моем компьютере с Windows 10. Вот мой код:

string dospath = "coqc afile.v >> text.txt"; int errorno = system(dospath.c_str());

Если в afile.v имеется ошибка синтаксиса / типа, Coq возвращает значимое сообщение об ошибке. В настоящее время я ничего не получаю в text.txt, даже если Coq возвращает ошибку (я вижу сообщение об ошибке в окне командной строки приложения C ++). Я хочу прочитать это (любое) сообщение (возвращаемое coqc ) в виде строки или текста в файле text.txt. Я знаю, что есть способы сделать это с помощью pstream.h, но я не могу заставить их работать на моей машине с Windows.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Вы можете перенаправить stderr на stdout следующим образом:

string dospath = "coqc afile.v >> text.txt 2>&1";

но есть лучший подход для получения потоков, как в CreateProcess

0 голосов
/ 15 мая 2018

При >> захватывается только выходной поток.

С 2>> поток ошибок может быть захвачен.

Попробуйте выполнить: string dospath = "coqc afile.v >> text.txt 2>>error.txt"

...