Qual é o problema? Obtendo um erro ENOTTY em uma chamada de função tcgetattr () quando o processo é chamado a partir de um script. O erro ocorre apenas quando executado a partir do script. Se for executado a partir de um shell interativo, funcionará bem.
O que exatamente o processo está fazendo? O processo está tentando desativar o processamento canônico da entrada de stdin. Isso é necessário porque as entradas podem estar chegando em rajadas e podem sobrecarregar a fila de entrada. Para isso, o processo obtém os parâmetros do descritor de arquivo de terminal para stdin usando a função tcgetattr (). e depois desliga a bandeira canônica em termios struct.
Motivo do erro? Quando um script é chamado, ele é executado no modo não interativo, o que significa que não há tty anexado e, portanto, não está disponível para o processo chamado a partir do script. É por isso que o processo está retornando ENOTTY.
Procurando? Solução alternativa para ainda ser capaz de invocar o processo a partir do script sem nenhuma alteração no programa? (Tentei forçar shell interativo usando -i no script, não funciona !!!)
Obrigado ...
Tags linux shell-script