我有一个包含约100,000个文件的目录。ls -f挂了一分钟以上。我运行了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只需要0.0111秒。我应该怎么做才能使牛不吮吸?