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!

 

 

你可能感兴趣的:(c,struct,Terminal)