O comportamento de
printf()parece depender da localização destdout.
- Se
stdoutfor enviado para o console,printf()será armazenado em buffer de linha e será liberado depois que uma nova linha for impressa.- Se
stdoutfor redirecionado para um arquivo, o buffer não será liberado, a menos quefflush()seja chamado.- Além disso, se
printf()for usado antes destdoutser redirecionado para o arquivo, as gravações subseqüentes (no arquivo) serão armazenadas em buffer de linha e serão liberado após a nova linha.
Fonte: Por que a stdout precisa flushing explícito quando redirecionado para o arquivo?
Eu não sou bem versado em programação C, mas aparentemente você precisa adicionar fflush(stdout); após cada instrução printf . Experimente da linha de comando. Se funcionar, deve funcionar com o cron.
Mais perguntas sobre este tópico: