파일을 열지 않고 isatty()를 수행할 수 있나요?

파일을 열지 않고 isatty()를 수행할 수 있나요?

리눅스에서는,

isatty(fd)주어진 경로를 사용하지 않고 해당 경로를 수행하는 것이 가능합니까 open()?

stat()캐릭터 장치인지 확인하기 위해 경로를 추적한 것을 발견했습니다 . 다음으로, 메이저 및 마이너 장치 번호를 가져 /sys/dev/char/<major>:<minor>/subsystem와서 에 연결되어 있는지 확인할 수 있습니다. 이는 장치(에 표시되지 않음 )를 /class/tty제외한 모든 항목에 작동하는 것 같습니다 ./dev/pts/<number>/sys/dev/char

더 완전한 방법이 있습니까?

답변1

/proc/tty/drivers대신 사용해 보세요 /sys/class/tty.

물론 이것은 그다지 견고하지는 않습니다. isatty()실제로 터미널( tcgetattr()-> ioctl(TCGETS)) 에서만 작동하는 ioctl을 호출하여 작동한다는 점에 유의하세요 . 파일의 플래그나 기타 메타데이터를 기반으로 추측하지 않습니다.

관련 정보