2010-11-20 34 views
16

Tôi có một chương trình trong Linux mà từ chối chạy nếu stdin/stdout của nó không phải là TTY (thiết bị đầu cuối). Có một công cụ dễ sử dụng mà sẽ tạo ra một PTY, bắt đầu chương trình với TTY mới được tạo ra, và sao chép tất cả dữ liệu trên stdin/stdout?Dữ liệu đường ống tới chương trình Linux mà dự kiến ​​một TTY (thiết bị đầu cuối)

Trường hợp sử dụng không tương tác, nhưng là tập lệnh. Tôi đang tìm giải pháp nhẹ nhất, tốt nhất là không tạo kết nối TCP và không yêu cầu quá nhiều công cụ và thư viện khác được cài đặt.

Trả lời

26

unbuffer, một phần của mong đợi (sudo apt-get install expect-dev trên Ubuntu Lucid), có thể đánh lừa một chương trình nghĩ rằng nó được kết nối với TTY.

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

+1 'kỳ vọng' để giành chiến thắng. –

+0

Thật sao? http://packages.ubuntu.com/lucid/i386/expect-dev/filelist –

+0

Tìm thấy nó, cảm ơn. – pts

Các vấn đề liên quan