문제

Linux에서는 마스터쪽에 의사 Tty를 열고 있습니다. 노예 측에는 클라이언트가 없지만 의사는 내가 그에게 쓰고있는 모든 것을 반향하는 것 같습니다. 이것이 제가 기대하는 것이 아닙니다. Following 코드를 고려하십시오.

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;   
}

이 프로그램을 실행할 때, 나는 읽기 호출을 차단할 것으로 예상되지만 대신 즉시 돌아오고 ReadBuf 컨텐츠는 C입니다.이 동작을 어떻게 변경할 수 있습니까? 노예 쪽이 열리지 않으면, 나는 마스터쪽에 쓰여진 캐릭터가 나중에 노예 쪽에서 읽을 수 있도록 사라지거나 Fifoed를 원합니다.

마스터 사이드 속성을 변경하는 것이 올바른 방법입니까?

도움이 되었습니까?

해결책

나는 마스터 쪽이 tty가 아니라고 생각했지만 분명히 그렇습니다. tcgettattr 그리고 tcsetattr, 에코를 억제하십시오.

다른 팁

차단을 사용할 수 있습니다 getch() 전화. 또한 getch() 내용을 반영하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top