LINUX.ORG.RU

История изменений

Исправление mky, (текущая версия) :

В приведённом вами исходнике вобще нет ни одного fprintf(stdout,...) или куда ещё, кроме потока stderr. Так что, либо давайте компилируемый исходник, дающий такое поведение, либо ищите, где вы пишете лишний '\n' в поток stdout, после того, как делаете fflush(), так что в буфере stdout остаётся только этот '\n'.

Или можете попробовать отключить буферизацию вывода на stdout через setvbuf(_IONBF) и буферизацию других потоков вывода (создаваемых через fopen()/fdopen()) и посмотреть, появляется ли этот '\n' в файле и в конце ли файла он появляется.

так вот если программе непосредственно задать имя файла, то она запишет вывод в этот файл

Программа просто пишет в этот файл через отдельный файловый дескриптор или заменяет им STDOUT через dup2()?

Исходная версия mky, :

В приведённом вами исходнике вобще нет ни одного fwrite(stdout,...). Так что, либо давайте компилируемый исходник, дающий такое поведение, либо ищите, где вы пишете лишний '\n' в поток stdout, после того, как делаете fflush(), так что в буфере stdout остаётся только этот '\n'.

Или можете попробовать отключить буферизацию вывода на stdout через setvbuf(_IONBF) и буферизацию других потоков вывода (создаваемых через fopen()/fdopen()) и посмотреть, появляется ли этот '\n' в файле и в конце ли файла он появляется.

так вот если программе непосредственно задать имя файла, то она запишет вывод в этот файл

Программа просто пишет в этот файл через отдельный файловый дескриптор или заменяет им STDOUT через dup2()?