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.