Você pode dar uma olhada no código-fonte de uma implementação de nohup
, por exemplo do GNU coreutils
versão . Há uma tonelada de configurações, algumas delas para fins de internacionalização, o restante para lidar com as várias opções de redirecionamento; então o real "nohupping" acontece:
signal (SIGHUP, SIG_IGN);
char **cmd = argv + optind;
execvp (*cmd, cmd);
Como você supõe, isso define o processo para ignorar o sinal HUP, então exec
s o comando solicitado.