É um pouco difícil de diagnosticar, já que você não dá origem a myproc
, mas eu suspeito que o seu problema tenha algo a ver com " controlando TTY ". Eu escrevi um pequeno script de shell que apenas chama sleep 100
. Eu rand ele em nohup
:
-bash-3.2 $ nohup ./sleeper > sleeper.out &
[1] 25305
-bash-3.2$ jobs
[1]+ Running nohup ./sleeper > sleeper.out &
-bash-3.2$ ps -l -p 25305
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 429624 25305 18252 0 77 0 - 15961 wait pts/0 00:00:00 sleeper
Se você olhar para a saída ps
, verá uma coluna chamada " TTY ". Pelo menos algumas versões de nohup
(a que usei acima é do GNU coreutils, versão 5.97, tão antiga). Quando saí do bash shell do qual iniciei sleeper
, a coluna TTY mudou para '?', Significando que sleeper
não tinha um.
Se myproc
não se separar deliberadamente do controle do TTY, ainda é possível obter coisas como um sinal SIGPIPE se ele tentar gravar no stdout. Parece-me que outras coisas são possíveis, mas não consigo me lembrar ou pesquisar no Google.
Se você puder encontrar ou compilar " daemonize ", você pode querer testá-lo. Se myproc
for compilado, você poderá modificar a origem para chamar a função de biblioteca daemon(3)
.