사용자 프로그램에서 터미널을 emulation 하는것
PTY 는 master/slave pair 로 이루어지는데 /dev/ptmx 파일을 open 하면 pseudo terminal master (PTM) 에 해당하는 file descriptor 가 생성되고 pseudo terminal slave (PTS) 에 해당하는 device 가 /dev/pts/ 디렉토리에 생성됩니다. 일단 두 ptm 과 pts 가 open 되면 /dev/pts/[번호] 는 실제 터미널과 같은 인터페이스를 프로세스에 제공합니다. ptm 에 write 한 데이터는 pts 의 input 으로, pts 에 write 한 데이터는 ptm 의 input 으로 사용됩니다. kernel 이 처리하는 레이어가 중간에 들어간 named pipe 와 비슷하다고 할 수 있습니다
- xterm, gnome-terminal, telnet, ssh...
virtual console 에서는 커널에서 터미널을 emulation 했다면, TTY driver 가 제공하는 session management 기능과 line discipline 을 그대로 사용하면서 사용자 프로그램에서 터미널을 emulation 하는것
PTY 는 master/slave pair 로 이루어지는데 /dev/ptmx 파일을 open 하면 pseudo terminal master (PTM) 에 해당하는 file descriptor 가 생성되고 pseudo terminal slave (PTS) 에 해당하는 device 가 /dev/pts/ 디렉토리에 생성됩니다. 일단 두 ptm 과 pts 가 open 되면 /dev/pts/[번호] 는 실제 터미널과 같은 인터페이스를 프로세스에 제공합니다. ptm 에 write 한 데이터는 pts 의 input 으로, pts 에 write 한 데이터는 ptm 의 input 으로 사용됩니다. kernel 이 처리하는 레이어가 중간에 들어간 named pipe 와 비슷
xterm 에서 ls 명령을 입력하면
ptm -> line discipline -> pts
를 거쳐서 bash shell (user process) 에 전달되고 명령의 실행 결과가 pts -> line discipline -> ptm
을 통해서 xterm 에 전달되면 xterm 은 실제 터미널과 같이 화면에 표시