我在Ubuntu 12.04上测试过它。首先,我在后台和关闭终端从user1运行java进程。然后我打开一个新的终端(来自user1)运行特殊脚本,将当前的tty名称(/dev/pts/2
)发送到java进程。当收到姓名时,就会出现问题。后台进程尝试打开/dev/pts/2
进行读取 - new FileInputStream(new File("/dev/pts/2"))
并在此之后捕获异常:
Caused by: java.io.IOException: Input/output error
at java.io.FileInputStream.readBytes(Native Method)
但是,写这个tty是有用的 - new FileOutputStream(new File("/dev/pts/2"))
。
我尝试以root身份运行java进程并且它有效(从/dev/pts/2
读取)!显然这是一个有/ dev / pts / X ...
如何解决从user1开始的后台进程从任何user1终端读取的问题?
/dev/pts
crw--w---- 1 root tty 136, 0 Jan 27 17:25 0
crw--w---- 1 user1 tty 136, 1 Jan 27 19:56 1
crw--w---- 1 user1 tty 136, 2 Jan 27 19:45 2
c--------- 1 root root 5, 2 Jan 27 17:25 ptmx