2010-11-20 25 views
16

J'ai un programme sous Linux qui refuse de s'exécuter si son stdin/stdout n'est pas un TTY (terminal device). Y at-il un outil facile à utiliser qui va créer un PTY, démarrer le programme avec le TTY nouvellement créé, et copier toutes les données sur stdin/stdout?Pipeter des données vers le programme Linux qui attend un TTY (terminal)

Le cas d'utilisation n'est pas interactif, mais script. Je suis à la recherche de la solution la plus légère, ne créant de préférence pas de connexions TCP, et ne nécessitant pas trop d'autres outils et bibliothèques à installer.

Répondre

26

unbuffer, partie de expect (sudo apt-get install expect-dev sur Ubuntu Lucid), peut tromper un programme en pensant qu'il est connecté à un ATS.

$ tty 
/dev/pts/3 
$ echo | tty 
not a tty 
$ echo | unbuffer tty 
/dev/pts/11 
+0

+1 «attendez» pour gagner. –

+0

Vraiment? http://packages.ubuntu.com/lucid/i386/expect-dev/filelist –

+0

Trouvé, merci. – pts