com relação ao seu arquivo de saída não sendo atualizado
tente modificar o programa em C e coloque uma instrução fflush(stdout);
após suas instruções printf()
. Isso forçará uma gravação no fluxo de saída.
Normalmente, se o printf () tiver \n
, ele fará com que a saída seja gravada na tela ou no arquivo, mas nem sempre. Então, quando você definitivamente quer que aconteça, use fflush();
E você não precisa usar fflush () após cada declaração printf, apenas coloque-o no lugar onde ele faz mais sentido, então nesse ponto você quer que todas as declarações printf anteriores que ainda estejam no buffer sejam escritas. fora.
E se o programa C não estiver gravando no stdout, mas em algum outro identificador de arquivo, coloque esse ponteiro de arquivo em fflush (), como no programa de exemplo abaixo
#include <stdio.h>
int main ( int argc, char *argv[] )
{
FILE *fp;
fp = fopen( "test.txt", "w" );
if ( fp != NULL )
{
fprintf( fp, "hello world\n");
fflush( fp );
/*
100+ lines of code here doing something else,
which could cause the above printf to sit in the
buffer until fclose or the program ends
*/
fclose( fp );
}
return 0;
}
Se você não pode modificar o programa C escrevendo a saída, então eu não sei como forçar o buffer a liberar de fora do programa.