약 10 만 개의 파일이있는 디렉토리가 있습니다. ls -f가 1 분 이상 정지합니다. 나는 strace를 실행하고 즉시 getdents를보기 시작 했으므로 ls는 디렉토리를 명확하게 읽습니다. 또한 brk에 대한 많은 호출을 보았으므로 ls는 메모리에있는 것들을 분명히 버퍼링합니다. readdir을 호출하고 파일 이름을 출력하는 간단한 프로그램을 작성했으며 즉시 응답합니다. 그러나 ls -f는 출력을 제공하지 않습니다. 무엇을 제공합니까? -f의 요점은 ls가 readdir 이상을 수행하지 않는다고 생각했습니다. 디렉토리의 내용을 나열하는 이식 가능하고 안정적인 방법이 있습니까? (이것은 Linux에서 gnu의 coreutils에서 ls입니다.)
-편집하다-
별명이 있었지만 "/ bin / ls -1f> / dev / null"에는 8 ~ 15 초가 걸리고 "/ bin / ls -1fx> / dev / null"에는 4 ~ 11 초가 걸리지 만 간단한 프로그램 readdir은 .011 초가 걸립니다. 귀신을 빨지 않게하려면 어떻게해야합니까?