nohup просто exec
- это команда, которую вы даете после игнорирования сигнала HUP
. Из исходного кода:
signal (SIGHUP, SIG_IGN);
/* skipping some stuff ... */
execvp (*cmd, cmd);
Я предполагаю, что это означает, что если указанная команда сделала что-то вроде:
signal (SIGHUP, SIG_DFL); /* restore default HUP signal handler */
nohup не будет работать должным образом.