2014-12-23 2 views

답변

1

열기 설명자에 fstat()을 사용해보세요. 이 시스템 호출은 struct stat을 반환합니다. 중복 된 설명자가 동일한 장치의 동일한 i- 노드를 참조합니다 (st_devst_ino 구성원은 struct stat입니다). 그리고 당신은 중복을 찾을 수 st_ino 독특한 st_dev 확인 및 - (반환 -1 폐쇄 디스크립터 stat() 당신은 안전하게 getrlimit(RLIMIT_NOFILE, ...)0에서 루프를 실행할 수 있습니다) 열려있는 모든 설명을 통해 루프를들이받은하여

.

UPDATE :

리눅스에 가까이에 fuser 명령을 찾고 후, 당신은 (전부 또는 "흥미로운"프로세스에 의해 열린 파일의 개요를 구축) /proc/PIF/fd/ 폴더를 보면 여러 프로세스에 대한이 정보를 찾을 수 있습니다 보인다 . FreeBSD의 비슷한 트릭에

fstat 명령에 의해 수행된다 (도없이 /proc 파일 시스템을 마운트)하지만,이 방법은 아마도 리눅스에 적용되지 않습니다 (깊은 선택하지 않은 경우).

+0

죄송합니다. 나는 분명히하지 않았습니다. 당신이 준 해결책은 내 문제를 해결하지 못합니다. 필자는 파일 기술자를 여러 프로세스에 전달하고 있었으며 원하는 모든 프로세스에서 특정 FD가 주어진다면 동일한 기본 커널 구조를 참조하는 시스템의 FD 번호를 계산할 수 있어야합니다. – sdeber

+0

@sdeber, 의견에 따라 답변이 업데이트되었습니다. – kestasx