Le fait qu'un processus soit "renié" n'a de sens que pour le shell interactif qui a créé ce processus. Cela signifie que le shell n'inclut pas (plus) le processus dans sa table de jobs, et que SIGHUP ne sera pas envoyé à ce processus lorsque le shell se fermera. Ce n'est pas vraiment lié à vos questions.
À propos de ce qui arrive aux sorties envoyées à un terminal virtuel supprimé: j'ai fait moi-même des tests et j'ai remarqué que les /dev/pts/x
périphériques ne sont pas accessibles et ne seront pas alloués à nouveau tant que tous les descripteurs de fichiers qui les désignent n'ont pas été fermés. Donc, je ne vois pas pourquoi les écritures sur un terminal supprimé seraient stockées. Je suppose que ce n'est même pas défini par POSIX.
À propos de la capture de la sortie d'un processus qui écrit sur un terminal, je ne pense pas que ce soit possible, même lorsque le terminal est toujours en vie¹. Tout ce que vous pouvez faire est de saisir l'entrée directe du terminal (c'est-à-dire les frappes ou les frappes simulées par la partie principale d'un pty). Si les processus lisaient sur stdin ce qui est écrit sur leurs terminaux, cela conduirait à une boucle auto io pour la plupart des processus.
À propos de la dernière remarque sur l'arrêt du processus, je ne sais pas vraiment ce qui se passe, mais je soupçonne des comportements plutôt étranges avec des signaux (SIGTTOU, SIGTTIN, SIGHUP ou autres) liés à l'état de premier plan / d'arrière-plan des groupes de processus, lorsque la session le leader quitte (par exemple su
, dans le cas que vous avez mentionné).
Réponse à l' édition: Non, en ce qui concerne la sortie, rien ne change quand un processus est renié: il est toujours attaché à son terminal de contrôle (à moins qu'il ne se détache déjà comme le font les démons). Vous pouvez le voir en utilisant ps
. Cependant, vous ne pourrez plus utiliser les commandes fg
/ bg
/ jobs
fournies par le shell pour ce processus. Cela signifie qu'il peut être difficile de l'alimenter avec les entrées du terminal (nécessite d'être dans le groupe de processus de premier plan).
-
1. à moins que le processus ne le veuille ou ne le détourne avec certains outils de débogage (voir les commentaires ci-dessus).