Quero iniciar um programa C em segundo plano a partir do terminal. O programa atua como driver bluetooth, o que significa que deve permanecer aberto enquanto o sistema estiver funcionando. Tentei com nohup e start-stop-daemon, mas em ambos os casos o programa c recebe o comando exit e fecha.
Como posso iniciar um programa C a partir de um terminal que é executado em segundo plano? Quero iniciá-lo e poder fechar o terminal na GUI (enquanto o programa C iniciado continua funcionando perfeitamente).
Obrigado!
Responder1
Parece que o programa precisa de um terminal de controle para ser executado (você pode descobrir strace
se não possui o código-fonte).
Você pode fornecer ao programa um terminal de controle (mesmo ao iniciá-lo como parte da inicialização do sistema) executando-o através de screen
(ot tmux
).
screen cmd arg1 arg2
Responder2
Eu acho que para daemonizar totalmente um programa, você faria
nohup the_command args ... </dev/null >/dev/null 2>/dev/null &
disown
Dependendo do seu sistema, você deve considerar iniciá-lo na inicialização do sistema usando upstart ou init ou algo parecido.