从主端更改伪 tty 回显模式

标签 c linux pty

在 linux 上,我在 master 端打开一个伪 tty。虽然从端没有客户端,但伪 tty 似乎在回显我写给他的所有内容,这不是我所期望的。 考虑以下代码:

int  main(int argc, char * argv[])
{
    int ptyfd;
    int rc;     /* return code */
    char readbuf[3];
    ptyfd = open("/dev/ptmx", O_RDWR | O_NOCTTY);
    die_on_error(ptyfd, "open ptmx");

    /* unlock and print slave name */
    rc = unlockpt(ptyfd);
    die_on_error(rc, "unlockpt");
    printf("Slave pts name : %s\n", ptsname(ptyfd));

    write(ptyfd, "C", 1);
    rc=read(ptyfd, readbuf, 1);
    die_on_error(rc, "read");
    printf("read returned %c\n",readbuf[0]);
    return 0;   
}

当我运行这个程序时,我希望 read 调用会阻塞,但它会立即返回并且 readbuf 内容是 C。我怎样才能改变这种行为?当从端未打开时,我希望写在主端的字符消失或被 fifoed 供从端读取。

更改主端属性是否正确?

最佳答案

我以为主端不是 tty,但显然是,所以你可以调用 tcgettattrtcsetattr 之类的东西,并抑制回声。

关于从主端更改伪 tty 回显模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/482818/

相关文章:

Android NDK 内存使用

c - 当通过 ip_mreqn 设置多播传出接口(interface)时,Sendto 返回 -1 和 errno 22(无效参数)

linux - FreeRadius 到 Cisco ACS

bash - 通过标准输入的箭头键

c - 告诉伪终端的从端口名称

c - a>b>c 当每个都有数值时进行评估

c - 存储仅检索一次然后删除的元素的最佳数据结构是什么?

c++ - 一元减号和有符号到无符号的转换

linux - 带有变量的 tcl sed

Python os.forkpty 为什么我不能让它工作