我使用pty伪终端模拟串口连接进行测试。我打开主人:
fd = open("/dev/ptmx", O_RDWR);
grantpt(fd);
unlockpt(fd);
printf("Slave pty: %s\n", ptsname(fd));
工作正常并创建/ dev / pts / XX从设备。我的测试程序打开此设备并正常工作。在此fd上执行select()将阻塞,直到客户端打开从属设备。但是,当客户端关闭从属端时,主服务器进入无限0长度读取的循环。如何重置从设备并返回阻塞,直到客户端打开它,而不是重复读取0个字节?我发现的唯一方法是完全关闭主端并重做open / grantpt / unlockpt然后我可能会得到一个不同的从设备名称?我想保留相同的奴隶设备..