2013-08-18 2 views
1

У меня есть программа, которую я хочу перенаправить на другой файл. Я попытался с помощью стандартногоНе удается перенаправить консольный вывод программы

foo.exe > out.txt 

Это не работает, и файл пуст, но когда я просто запустить его из ЦМД, я могу увидеть все сообщения в обычном режиме.

Что я заметил, если я не запускаю программу правильно и получаю ее сообщение об использовании, это действительно работает.

Я проверил источник (C++), и кажется, что отпечатки (используя printf) не из одного потока.

Любые идеи, почему это происходит, и как я могу это исправить?

+0

Я могу попробовать: foo.exe 2> & 1> out.txt в случае, если приложение пишет stderr. Или foo.exe 2> out.txt Ок. Это не Linux? Тогда я не могу вам помочь. – user2672165

+0

Я думаю, вам лучше разместить свой код, чтобы узнать, что происходит. –

ответ

0

Программа может Ouput с STDERR или стандартный вывод, который по умолчанию ФД 2 и 1.

просто использовать "2> & 1", которая, как реализовать "dup2 (1, 2).

2

мне удалось решить эту проблему путем добавления

setbuf(stdout,NULL); 

к программам основных.

Я думаю, что буфер stdout не смывался.