2013-06-05 2 views
3

디스크립터 유형은 어떻게 얻을 수 있습니까? epoll을 사용하여 소켓, 타이머 및 신호와 같은 많은 설명자를 모니터하고 있습니다. fstat을 사용하는 것이 가능하다는 것을 알았지 만,이 모드는 소켓과 파이프에 대해서만 말합니다. fstat manpage. 디스크립터를 식별하는 특별한 기능이 있습니까?리눅스 디스크립터 유형

+0

죄송합니다. 질문이 명확하지 않습니다. 너는 무엇을 얻고 싶니? – kirelagin

+2

아, 알겠습니다. epoll에서 반환 된 설명자의 형식 (소켓/파일/etc)을 가져 오려면 어떻게해야합니까? – kirelagin

+0

'fstat'에서 얻은'st_dev' 필드를 검사 해보십시오. 메이저 넘버를 가져 와서'/ proc/devices'에서 찾아서 다른 디스크립터에 대해 무엇을 얻을 수 있는지보십시오. – ugoren

답변

1

나는 당신이 원하는 것을하기위한 단순하거나 획일적 인 방법이 없다고 생각합니다. lsof] 1 명령은이 정보를 결정하므로 해당 코드를보고 그들이하는 일을 볼 수 있습니다.

설명자가 소켓인지 여부를 결정하기 위해 내 머리 꼭대기에서 getsockopt (2)를 사용할 수 있습니다. getsockopt에 대한 호출이 실패하고 errno == ENOTSOCK이라면 당신의 기술자는 소켓이 아닙니다. 마찬가지로 isatty (3)를 사용하여 설명자가 직렬 포트 또는 터미널에 속하는지 확인할 수 있습니다.

+0

좋아, 고마워요 :) – Kouros

관련 문제