lpend와 비슷한 프로그램을 재현하기 위해 opendir/readdir/closedir를 사용하고 있는데, "ls" 그것은 "/ dev/fd /"재귀 옵션을 함께, 그것은 실제로 존재하는 것보다 더 많은 파일을 찾을 수 있습니다, 그 숨겨진 된 파일이 아닙니다 (나는 '.'시작 파일을 의미). 사실은 내가 줄 : "/ dev/fd/:" "0 1 2 3" 내 너무. 하지만, gdb에서는 4,5, 6 파일이 3 개 더 있습니다. gdb가 자신의 환경을 생성하므로이 사실을 잊어 버리라고 들었습니다. 내가 LS 시도 "는/dev/FD /"내 프로그램을 제공하는 동안 진정한 LS 즉시 목록을 중지 -R :readdir (3) 이상한 행동 :/dev/
"는/dev/FD/3 :"
"는/dev/FD/3/3/"
"/dev/fd/3/3/......../10 "
STAT 복귀 -1 40 개 적어도 파일하지만 실행이 계속 후 : 세그먼트 오류.
내 컴퓨터에서 "S_ISDIR"매크로는 기존 파일에서 "/ dev/fd/3 /"과 같이 존재하지 않는 파일에서 나를 0으로 반환합니다./"1을 반환합니다 ...
나는 왜 내 프로그램이 잘못 되었는가를 알고 싶었습니다. 실제로는 ls가 내 컴퓨터에서 stat64를 사용하지만, 그래도 나는 여전히 잘못되었습니다. fstat64, futex 및 기타 내가 사용하는 syscall을 사용하십시오.
나는 내 코드에 대한 약간의 샘플을 보여 드릴 수 있습니다. 조금 더 자세히 설명해 주셔서 대단히 죄송합니다.
감사합니다.
PS :
'/ dev'에있는 파일이 실제로 가상 파일이라는 것을 이해하고 있습니까? 특히,'/ dev/fd' 아래의 파일들은 현재 열려있는 파일 기술자들과 일치하므로, (opendir (2)를 통해) 디렉토리를 읽는 파일 디스크립터를 여는 것은 디렉토리 내용을 변경합니다. –
@Adam : 답변이어야합니다! – duskwuff
고맙습니다. 파일 시스템에 대한 더 많은 정보를 얻고 이러한 파일을 읽지 않아도되는 문제를 해결해야합니다. – r3dalice