Redireciona stdout para um arquivo quando o processo é executado em segundo plano

4

Como posso redirecionar o stdout de um programa para um arquivo quando ele é executado em segundo plano?

Eu tenho um programa que gera saída a cada segundo. Quando eu corro normalmente e redireciono para um arquivo, a saída está no arquivo como esperado:

#./program > file.txt
#cat file.txt
 output
 output
 output
#

Quando tento fazer a mesma coisa em segundo plano, o arquivo fica vazio:

#./program > file.txt &
#cat file.txt
#
    
por Rauffle 19.07.2012 / 21:32

2 respostas

4

Que tal sh -c './program > file.txt; cat file.txt' & ?

    
por 26.07.2012 / 02:39
2

Ao redirecionar o stdout para um arquivo de texto, você está alterando o tipo de fluxo do console para o arquivo . A saída do console é sem buffer, enquanto a saída do arquivo é armazenada em buffer. Até o programa liberar o dispositivo stdout (arquivo), o texto continuará sendo armazenado em buffer até que o limite de buffer seja atingido. Se o texto "output \ n" for impresso a cada 2 segundos e o limite for 4.096 bytes, levaria quase 20 minutos para ver qualquer saída do programa no arquivo.

    
por 03.09.2013 / 23:49