我尝试使用
打印到另一个终端fd=open("/dev/pts/0",O_RDWR);
write(fd,"hello",5);
它运作正常。但是我尝试以相同的方式读取一系列字符,看起来输入顺序不一致。
fd=open("/dev/pts/0",O_RDWR);
read(fd,&ch1,1);
read(fd,&ch2,1);
read(fd,&ch3,1);
并且我在pts / 0中输入了数据“abcde”,但是当我打印输出时,我得到了“acd”,有时我会得到“bce”。有人可以解释这种行为吗?我在某地读过Unix不允许来自其他终端的输入,但即便如此,这些字符是如何被pts / 1中运行的程序接收的?
答案 0 :(得分:0)
如果两个进程都从同一个终端读取,则每个输入数据位只会进入两个进程中的一个。所以你看到了数据的一个子集,你在终端上运行的shell或其他程序正在获取剩余的数据。
输出也是两个进程创建的输出的组合,但这与您想要的直观对应。 (即,你的shell可能在实验期间没有输出任何内容,你输出“hello”,没有任何组合和“hello”是“你好”。)