Oui c'est le cas. Tout d'abord, créez un canal :mkfifo /tmp/fifo
.Utilisez gdb pour attacher au processus :gdb -p PID
Fermez ensuite stdin :call close (0)
; et rouvrez-le :call open ("/tmp/fifo", 0600)
Enfin, écrivez (depuis un autre terminal, car gdb se bloquera probablement) :
echo blah > /tmp/fifo
Lorsque le terminal d'origine n'est plus accessible...
reptyr
peut être ce que vous voulez, voir https://serverfault.com/a/284795/187998
Citation à partir de là :
Jetez un oeil à reptyr, qui fait exactement cela. La page github contient toutes les informations.
reptyr - Un outil pour "re-ptyer" les programmes.
reptyr est un utilitaire permettant de prendre un programme en cours d'exécution et de l'attacher à un nouveau terminal. Vous avez commencé le processus en cours d'exécution sur ssh, mais vous devez partir et vous ne voulez pas l'interrompre ? Démarrez simplement un écran, utilisez eptyr pour le saisir, puis fermez la session ssh et rentrez chez vous.
UTILISATION
Reptyr PID
"reptyr PID" saisira le processus avec l'identifiant PID et l'attachera à votre terminal actuel.
Après l'attachement, le processus prendra l'entrée et écrira la sortie sur le nouveau terminal, y compris ^ C et ^ Z. (Malheureusement, si vous l'exécutez en arrière-plan, vous devrez toujours exécuter "bg" ou "fg" dans l'ancien terminal. impossible de réparer de manière raisonnable sans patcher votre shell.)
Je suis sûr que vous ne pouvez pas.
Vérifier avec ps x
. Si un processus a un ?
en tant que tty contrôlant , vous ne pouvez plus lui envoyer d'entrées.
9942 ? S 0:00 tail -F /var/log/messages
9947 pts/1 S 0:00 tail -F /var/log/messages
Dans cet exemple, vous pouvez envoyer une entrée à 9947
faire quelque chose comme echo "test" > /dev/pts/1
. L'autre processus (9942
) n'est pas joignable.
La prochaine fois, vous pourriez utiliser screen ou tmux pour éviter cette situation.