Tôi đã có một thư mục chứa khoảng 100.000 tệp trong đó. ls -f bị treo trong hơn một phút. Tôi chạy strace, và ngay lập tức bắt đầu thấy getdents, vì vậy ls đang đọc thư mục rõ ràng. Tôi cũng thấy rất nhiều cuộc gọi đến brk, vì vậy ls rõ ràng là đệm mọi thứ trong bộ nhớ. Tôi đã viết một chương trình đơn giản gọi readdir và xuất ra tên tệp, và nó phản hồi ngay lập tức. Nhưng ls -f không cung cấp đầu ra. Đưa cái gì? Tôi nghĩ rằng toàn bộ quan điểm của -f là nó khiến ls không làm gì khác hơn là readdir. Có một cách di động, đáng tin cậy để liệt kê các nội dung của một thư mục? (Lưu ý, đây là ls từ coreutils của gnu trên Linux.)
-BIÊN TẬP-
Có một bí danh tại chỗ, nhưng "/ bin / ls -1f> / dev / null" mất 8 đến 15 giây, "/ bin / ls -1fx> / dev / null" mất 4 đến 11 giây, nhưng một chương trình đơn giản điều đó chỉ làm readdir mất 0,011 giây. Tôi cần làm gì để khiến gnu không bị hút?