最近很纳闷,发现Linux下虚拟出串口,自己写给串口的数据为什么自己还能读到!
当对方打开虚拟串口读时就读不到自己所写过去的数据了。只有当对方不打开虚拟串口
时自己就能够读自己write的数据。
源码如下:
fdm = open("/dev/ptmx", O_RDWR); /* open master */
if (fdm < 0) {
printf("open /dev/ptmx error \n");
return -1;
}
grantpt(fdm); /* change permission of slave */
unlockpt(fdm); /* unlock slave */
slavename = ptsname(fdm); /* get name of slave */
unlink(target);
if(0 != chmod(slavename,0666)){
printf("chmod 0666 slave error\n");
}
if (0 != symlink(slavename, target)){
printf("link %s to %s error",slavename,target);
return -3;
}
如果调用者是一个还没有控制终端的会话,open就会分配一个从设备作为控制终端。如果我
们不希望函数自动做这件事,可以在调用时指明O_NOCTTY标志。