本文主要是介绍Pseudo Terminal 写到master 里面的数据默认是回显的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天上午调试蓝牙串口, 需要用到 Pseudo Terminal
碰到这位兄弟一样的问题
http://topic.csdn.net/u/20080110/16/3ca493af-09c5-441d-9a6e-381df51ef240.html
int find_pts(char **slave)
{
int master;
extern char *ptsname();
/* open master pseudo-tty device and get new slave pseudo-tty */
if ((master = open("/dev/ptmx", O_RDWR)) > 0) {
grantpt(master);
unlockpt(master);
*slave = ptsname(master);
return(master);
}
return(-1);
}
在主设备这一侧,write/read, 然后在从设备这一侧,read/write
试下来,从设备可以往主设备发东西,可是主设备好像不能往从设备发东西啊?
即从设备这一侧write, 主设备这一侧read, 成功;
主设备这一侧write, 从设备这一侧read, 失败,read不过来,变成主设备自己写进去又自己读出来了,很奇怪.
找了半天终于找到原因:
PseudoTerminal 写到master 里面的数据默认是回显的, 就像通常的 tty设备,输入命令,它会显示输入的命令.
设置 struct termios
termio.c_lflag &= ~(ECHO | ICANON | ISIG);
tcsetattr(master, TCSCANOW, &termio);
Ok & Done!
这篇关于Pseudo Terminal 写到master 里面的数据默认是回显的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!