리눅스에서는 dup
command family을 사용하여 파일 설명자를 복제 할 수 있습니다.리눅스의 파일 디스크립터에 대한 중복 횟수 계산
시스템 호출을 통해 파일 디스크립터에 대한 중복 수를 구할 수있는 방법이 있습니까?
리눅스에서는 dup
command family을 사용하여 파일 설명자를 복제 할 수 있습니다.리눅스의 파일 디스크립터에 대한 중복 횟수 계산
시스템 호출을 통해 파일 디스크립터에 대한 중복 수를 구할 수있는 방법이 있습니까?
열기 설명자에 fstat()
을 사용해보세요. 이 시스템 호출은 struct stat
을 반환합니다. 중복 된 설명자가 동일한 장치의 동일한 i- 노드를 참조합니다 (st_dev
및 st_ino
구성원은 struct stat
입니다). 그리고 당신은 중복을 찾을 수 st_ino
독특한 st_dev
확인 및 - (반환 -1 폐쇄 디스크립터 stat()
당신은 안전하게 getrlimit(RLIMIT_NOFILE, ...)
에 0
에서 루프를 실행할 수 있습니다) 열려있는 모든 설명을 통해 루프를들이받은하여
.
UPDATE :
리눅스에 가까이에 fuser
명령을 찾고 후, 당신은 (전부 또는 "흥미로운"프로세스에 의해 열린 파일의 개요를 구축) /proc/PIF/fd/
폴더를 보면 여러 프로세스에 대한이 정보를 찾을 수 있습니다 보인다 . FreeBSD의 비슷한 트릭에
이
fstat
명령에 의해 수행된다 (도없이 /proc
파일 시스템을 마운트)하지만,이 방법은 아마도 리눅스에 적용되지 않습니다 (깊은 선택하지 않은 경우).
죄송합니다. 나는 분명히하지 않았습니다. 당신이 준 해결책은 내 문제를 해결하지 못합니다. 필자는 파일 기술자를 여러 프로세스에 전달하고 있었으며 원하는 모든 프로세스에서 특정 FD가 주어진다면 동일한 기본 커널 구조를 참조하는 시스템의 FD 번호를 계산할 수 있어야합니다. – sdeber
@sdeber, 의견에 따라 답변이 업데이트되었습니다. – kestasx