Dopo circa un'ora di ricerca su Google, non riesco a crederci nessuno ha mai fatto questa domanda prima...
Quindi ho uno script in esecuzione su TTY1. Come faccio a fare in modo che lo script avvii un programma arbitrario su TTY2?
- Ho trovato
tty
, che ti dice su quale TTY ti trovi attualmente. - Ho trovato
writevt
, che scrive una singola riga di testo su un TTY diverso. - Ho trovato
chvt
, che cambia quale TTY è attualmente visualizzato.
Non voglio visualizzare TTY2. Voglio solo che lo script principale continui a essere eseguito normalmente, ma se passo manualmente a TTY2 posso interagire con il secondo programma.
Risposta accettata:
setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'
Finché nient'altro utilizza l'altro TTY (/dev/tty2
in questo esempio), dovrebbe funzionare. Questo include un getty
processo che potrebbe essere in attesa dell'accesso di qualcuno; avere più di un processo che legge il suo input da un TTY sarà portare a risultati inaspettati.
setsid
si occupa di avviare il comando in una nuova sessione.
Nota che command
dovrà occuparsi di impostare il stty
impostazioni corrette, ad es. attiva "modalità cucinata" e onlcr
in modo che l'output di una nuova riga aggiunga un ritorno a capo, ecc.