将数据管道到需要TTY(终端)的Linux程序

pts*_*pts 20 linux terminal pipe tty pty

我在Linux中有一个程序,如果它的stdin/stdout不是TTY(终端设备),它就拒绝运行.是否有一个易于使用的工具,它将创建一个PTY,使用新创建的TTY启动程序,并通过stdin/stdout复制所有数据?

用例不是交互式的,而是脚本的.我正在寻找最轻量级的解决方案,最好不要创建TCP连接,也不需要安装太多其他工具和库.

Ign*_*ams 32

unbuffer期望的一部分(sudo apt-get install expect-dev在Ubuntu Lucid上),可以欺骗程序认为它与TTY相关联.

$ tty 
/dev/pts/3
$ echo | tty 
not a tty
$ echo | unbuffer tty 
/dev/pts/11
Run Code Online (Sandbox Code Playgroud)