가상터미널(pts) 모니터링에 대한 질문요.

devanix의 이미지

안녕하세요.

...
fd1 = open("/dev/pts/0", O_RDONLY);
fd2 = open("/dev/pts/1", O_RDONLY);
...
while(1) {
 fd_set rfds;
 FD_ZERO(&rfds);
 FD_SET(fd1, &rfds);
 FD_SET(fd2, &rfds);
 n = select(fd2+1, &rfds, NULL, NULL, NULL);
...
 if (FD_ISSET(fd1, &rfds))
   read..
   write..
 if (FD_ISSET(fd2, &rfds))
   read..
   write..
}

위의 예에서 처럼 2개의 가상터미널을 열어 select함수로 모니터링을 하고자 하면
가끔 한문자씩 받기는 하지만 생각한것처럼 나오지 않습니다.

[Q1]원하는 것은 가상터미널에서 타이핑한것을 모니터링 하고싶은데 무엇이 문제인지 원리가 잘 이해가 가지 않습니다.

[Q2] cat < /dev/pts/0 을 리다이렉션 해서 모니터링 하면 정작 /dev/pts/0에서 타이핑친건 echo가 되지 않코
cat을 호출한 프로세스에서만 문자열이 찍힙니다.

도움이 될만한 정보나 답변 부탁드려요.

좋은 하루 되세요.