Après environ une heure de recherche sur Google, je ne peux pas croire personne n'a posé cette question avant…
J'ai donc un script en cours d'exécution sur TTY1. Comment puis-je faire en sorte que ce script lance un programme arbitraire sur TTY2 ?
- J'ai trouvé
tty
, qui vous indique sur quel ATS vous êtes actuellement. - J'ai trouvé
writevt
, qui écrit une seule ligne de texte sur un ATS différent. - J'ai trouvé
chvt
, ce qui modifie le TTY actuellement affiché.
Je ne veux pas afficher ATS2. Je veux juste que le script principal continue à s'exécuter normalement, mais si je passe manuellement à TTY2, je peux interagir avec le deuxième programme.
Réponse acceptée :
setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'
Tant que rien d'autre n'utilise l'autre TTY (/dev/tty2
dans cet exemple), cela devrait fonctionner. Cela inclut un getty
processus qui peut attendre que quelqu'un se connecte ; avoir plus d'un processus lisant son entrée à partir d'un TTY va conduire à des résultats inattendus.
setsid
se charge de lancer la commande dans une nouvelle session.
Notez que command
devra prendre soin de définir le stty
réglages corrects, par ex. activer le "mode cuit" et onlcr
de sorte que la sortie d'une nouvelle ligne ajoutera un retour chariot, etc.