Clarification sur les signaux (sighup), les travaux et le terminal de contrôle

J'ai donc lu deux points de vue différents et j'essaie de déterminer lequel est juste.

1) Certaines sources en ligne disent que les signaux envoyés depuis le terminal de contrôle sont SEULEMENT envoyés au groupe de processus de premier plan. Cela signifie que si un processus pour continuer à fonctionner en arrière-plan lorsque vous vous déconnectez, il suffit de suspendre simplement le travail (ctrl-Z) et de le reprendre en arrière-plan (bg). Ensuite, vous pouvez vous déconnecter et cela continuera à s'exécuter, car SIGHUP est uniquement envoyé au premier plan.

Voir: http://blog.nelhage.com/2010/01/a-brief-introduction-to-termios-signaling-and-job-control/

… En outre, si un caractère générateur de signal est lu par un terminal, il génère le signal approprié au groupe de processus de premier plan ….

2) D'autres sources affirment que vous devez utiliser la commande "nohup" au moment où le programme est exécuté ou, à défaut, émettre une commande de "renvoi" pendant l'exécution pour l'enlever de la table des travaux qui écoute SIGHUP. Ils disent que si vous ne le faites pas lorsque vous vous déconnectez, votre processus sortira également même s'il s'exécute dans un groupe de processus de fond.

Par exemple: http://docstore.mik.ua/orelly/unix3/upt/ch23_11.htm

… Si je me suis connecté de toute façon, le shell envoie mon travail de fond un signal HUP …

Dans mes propres expériences avec Ubuntu linux, il semble que 1) soit correct. J'ai exécuté une commande: "sleep 20 &" puis déconnecté, connecté à nouveau et appuyez sur "ps aux". Bien sûr, la commande sleep était toujours en cours d'exécution.

Alors, pourquoi est-ce que tant de personnes semblent croire au numéro 2? Et si tout ce que vous avez à faire est de placer un travail en arrière-plan pour le faire fonctionner Pourquoi tant de personnes utilisent-elles "nohup" et "renier"?