J'ai un fichier ouvert dans vi
exécuté dans un terminal( xterm
), si je ferme directement le terminal sans avoir préalablement fermé le fichier, je peux voir l'icône vi
toujours en cours d'exécution en arrière-plan( ps x
). Existe-t-il un moyen d'attacher ce processus, c'est-à-dire vi, à un autre terminal afin que je puisse continuer à travailler sur le fichier ? J'ai également essayé fd
mais elle échoue.
Réponses
Trop de publicités?Ce n'est pas possible "proprement". Il existe des outils tels que écran y tmux qui créent un terminal virtuel rémanent : vous pouvez démarrer votre programme dans screen, détacher la session screen, et plus tard rattacher la session screen sur un autre terminal. Mais cela nécessite une planification préalable.
Il est possible d'utiliser ptrace de tripoter les descripteurs de fichiers du processus pour les reconnecter à un autre terminal. Cela ne fonctionne pas de manière fiable car cela peut créer des incohérences dans les structures de données du processus : certains programmes ne s'en soucient pas, d'autres se plantent. Vous pouvez le faire en attachant le programme dans un débogueur et en émettant la bonne séquence d'appels système (au moins open
, dup
y close
pour chacune des entrées standard, sorties standard et erreurs standard). Il existe plusieurs outils qui peuvent faire cela, par exemple neercs y Retenue .
Voir aussi Comment puis-je mettre en pause un processus en cours d'exécution via ssh, le désactiver, l'associer à un nouvel écran Shell et le remettre en pause ? , Afficher le script via SSH ? , Puis-je interrompre/écraser un processus déjà lancé ? , Reprise de la commande en cours d'exécution dans une session SSH abandonnée .
Vous pouvez essayer Écran GNU . Il est conçu à cet effet.
Screen est un gestionnaire de fenêtres plein écran qui multiplexe un terminal physique entre plusieurs processus, généralement des shells interactifs.