pts로 넘어오는 글자를 읽을수 있나요?

kang1의 이미지

가령 tty가 1인 터미널에게

echo "hi" > /dev/pts/1

라고 보냈을때

받는측에서 "hi"라는 글자를 읽어서 그에 대한 반응을 할수 있게 만들수 있을까요?

bash의 read나 c의 scanf로는 안읽어 지더군요...

답변 부탁드립니다!!

harisoo의 이미지


open("/dev/pts/1",O_RDWR);

termios 셋팅을 하시고

select()로 감시하시다가 변화가 있을시에 읽으시면 됩니다.

단 저 터미널이 이미 열린상태라면 다시 말하면 다른 사용자가

저 터미널을 이용중이라면 데이터가 들어올시에 서로 경쟁상태가 될 수 있습니다.

따라서 실험을 하시려면 저 터미널 사용자가 있다면 그 사용자가 해당터미널에

sleep(10000)을 주고 읽으시면 제대로 읽을 수 있습니다.