2016-01-28 4 views
2

Здравствуйте, я пишу программу в C. Я начинаю так, как после компиляции.C stderr к файлу

/a.out <source.txt >output 

Я хочу, чтобы все сообщения были напечатаны в файле output.txt. Однако я бы хотел отправить ошибки на консоль, а не в файл. Проблема заключается в том, когда я использую это заявление в своем коде:

freopen("errors.txt", "w", stderr); 
fprintf (stderr, "%s\n", s); 

Все Erros также напечатаны в output.txt файл не errors.txt я был бы признателен за любую помощь.

+1

Как именно вы вызывали свой исполняемый файл с перенаправлением вывода? Можете ли вы вставить свою командную строку? –

+0

Только способ, которым эта команда печатается в файле output.txt, заключается в том, что вы перенаправили свой stderr в какой-либо файл. –

+0

Возможный дубликат [In C как вы перенаправляете stdin/stdout/stderr в файлы при выполнении execvp() или аналогичного вызова?] (Http://stackoverflow.com/questions/14543443/in-c-how-do- вы-redirect-stdin-stdout-stderr-to-files-when-making-an-execvp-or) –

ответ

1

По умолчанию stdout и stderr вместе направляются на консоль. Однако вы можете перенаправить поток ошибок в файл с помощью следующей формы вашей командной строки: ./a.out 2> logfile.log. В этом случае stdout по-прежнему будет поступать на консоль, но stderr пойдет в файл.

+0

это сработало. спасибо – Dago