Upstart e isstty (STDOUT_FILENO)

0

Muitos programas Linux usam istty para determinar se o STDOUT é um terminal ou não. Por exemplo, ls irá (por padrão) suprimir a saída colorida se for redirecionada ( istty == 0 ).

Ao executar tarefas de inicialização, o STDOUT não parece ser redirecionado. O processo pensa que está escrevendo para /dev/pts/0 .

Meu aplicativo usa essa mesma abordagem dedutiva e, sob o upstart, envia caracteres de controle do terminal que acabam nos arquivos de log em /var/log/upstart/myapp.log .

Posso configurar o trabalho inicial ou modificar a origem do aplicativo (C ++) para corrigir esse problema?

(Não são apenas caracteres de controle, mas também coisas como timestamps são omitidos da saída do console, mas incluídos nos arquivos de log.)

    
por Drew Noakes 29.01.2015 / 11:33

1 resposta

0

Ter seu programa se comportando de maneira diferente dependendo do que está conectado é desaprovado. Por exemplo, as Normas de Codificação da GNU dizem :

% bl0ck_qu0te%

Em vez disso, considere adicionar opções de linha de comando ao seu programa para alterar o comportamento e usá-las em seu trabalho inicial.

    
por Robie Basak 29.01.2015 / 12:03