nftw
需要一个参数来表示要使用的文件句柄数。我看过几个例子,将其指定为20(这是POSIX保证的最小值?但也可以使用getrlimit
或sysconf
来获取实际可用的数量)。是不应该将其指定为17,因为stdin / out / err已经使用了三个文件句柄?或者我误解了它是如何工作的? (同样,如果我们使用getrlimit
或sysconf
得到实际可用的数字,我们应该在传递参数之前减去3吗?)
答案 0 :(得分:1)
至少为stdin,stdout和stderr打开三个文件描述符听起来像是一个很好的建议。此外,您可能会根据自己的需要打开一个或两个描述符。快速扫描我的系统会显示0
和109
个开放描述符之间的范围,4
非常常见。
答案 1 :(得分:1)
文件描述符的数量是进程可以拥有的文件描述符的总数。像sysconf
这样的函数不知道是否已经使用过其中一些函数。您可以通过打开多个文件来测试这一点,sysconf
应该在之前和之后返回相同的值。
为标准文件描述符减去3可能是个好主意,为了以防万一,可能还有几个。