https://man7.org/linux/man-pages/man7/pty.7.html
"UNIX 98 의사 터미널"에서는 작동한다고 말하지만 ptsname
(그런 다음 open
) 이 함수는 파일 설명자를 허용합니다. 거기에 0(STDIN)과 1(STDOUT)을 넣으려고 했지만 "장치에 부적절한 ioctl"이라는 오류 메시지가 표시되어 실패했습니다. 그놈 터미널에서 프로그램을 실행합니다.
나는 다른 xterm
프로그램을 작성하고 있지 않습니다. 비동기(비차단) 비표준 하위 수준 입력 및 출력을 위한 파일 설명자를 갖고 싶을 뿐입니다.
답변1
글쎄, 나는 스스로 대답하려고 노력했다.
- 기능 피드 , 표준 설명자가
tty
있는 실제 장치를 찾아야 합니다 .isatty
0
1
2
- 실제 tty가 발견되면 이
ttyname
함수는 터미널 장치에 대한 경로를 제공합니다. - 그것을 열면
open
파일 설명자가 제공됩니다.
O_RDONLY
선언 (또는 O_WRONLY
둘 중 하나)과 플래그 O_NONBLOCK
에 의해 부과된 비차단 동작 에도 불구하고 read
내 시스템(Debian 12)의 함수는 터미널 장치가 원시 모드로 전환된 후에도 여전히 차단됩니다( 및 tcgetattr
함수 사용 ) . ).cfmakeraw
tcsetattr
ioctl
FIONREAD
비동기식 읽기는 보류 중/읽기 가능한 바이트를 반환하는 +의 도움으로 구현됩니다. (또한 poll
함수를 시도했지만 작동하지만 나에게는 오버헤드처럼 보입니다.)
이제 비동기 쓰기를 구현/테스트하는 방법을 잘 모르겠습니다.