我是pty设备的所有者,就像这个权限是crw-w--
mknod pty1 c 1 1
cat > pty1告诉我不允许动手术。
稍后我要做的是使用open打开程序中的文件,然后调用write将输出发送到终端,就好像它是磁盘文件一样。
为什么猫不工作。我们可以写到一个pty或从pty中读取使用打开和写。
我们能用java做这个吗。java写入实际上是pty的文件。
问题来源:forcing a program to flush its standard output when redirected
更新:这个问题还不清楚。我需要增加更多的信息吗?
ls -la输出
crw--w---- 1 iamrohitbanga users 1, 1 2010-01-13 18:27 pty1
crw--w---- 1 iamrohitbanga users 1, 2 2010-01-13 18:29 pty2也是
当我在一个终端中执行cat /dev/pt/0,而在另一个终端中执行cat >/dev/pt/0时,我看不到其中一个被传输到另一个终端的输入。
发布于 2010-01-13 16:13:14
这不是PTY的工作方式;您应该阅读man 4 pty和man 4 pts。(旧的BSD式设备不应该再使用了。)
为了打开一个伪终端从( PTS,/dev/pts/#由ptsname(3)返回),另一个程序必须创建一个伪终端主(PTM,由posix_openpt(3)返回),并使用grantpt(3)和unlockpt(3)启用PTS。
使用forkpty(3) etc.助手函数比自己调用低级别函数容易得多。
即使在那之后,它也不像FIFO那样工作(你似乎在期待):写进PTS的任何东西都会出现在PTM上,而从PTS读取的任何东西都是从PTM中写出来的。
https://stackoverflow.com/questions/2056858
复制相似问题