微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ENFILE,当使用内核iterate_dir时,文件表溢出

我最近开始使用系统编程,想知道iterate_dir是如何工作的。

我写了一些东西,我不知道为什么我会得到错误。 我的代码在大约190k-210k的迭代中开始失败。

struct dir_context context2 = { actor2,0 }; for (i = 0; i < 1000000; i++) { file = filp_open("/",O_RDONLY,0); if (IS_ERR(file)) { printk(KERN_ALERT "ERR: %d",file); break; } if (iterate_dir(file,&context2)) { printk(KERN_ALERT "iterate_dir Failed"); break; } filp_close(file,0); }

这个错误总是一样的(ENFILE,File table overflow),但是我打开并closures了这个文件,而actor2什么都不做。 有时会打印vfs file-max limit xxx reached 。

static int actor2(struct dir_context *ctx,const char *name,int namlen,loff_t offset,u64 ino,unsigned int d_type) { return 0; }

或者,也许我必须closuresactor2内的文件(但没有filep?!)。

如何重新加载修改的内核模块

Linux内核构build:以非交互方式执行“make localmodconfig

通过ASM代码处理系统调用

如何用QEMUdebuggingLinux内核模块?

如何find编译的内核模块的版本?

Android和内核模块

最好的linux发行版来做内核模块编程

警告构build使用导出符号的内核模块

如何写一个正在写入特定设备的杯栅格驱动程序

为什么我的内核模块中的探测function没有被调用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐