【发布时间】:2010-05-22 21:12:14
【问题描述】:
我正在处理内核模块中的一个问题,该模块使用 /proc 条目从用户空间获取数据。
我为我自己定义的 /proc 条目设置了打开/写入/发布条目,并妥善管理以使用它从用户空间获取数据。 我很好地处理了 open/write 函数中的错误,并且它们对用户可见为 open/fopen 或 write/fwrite/fprintf 错误。
但有些错误只能在关闭时检查(因为此时所有数据都可用)。在这些情况下,我返回不同于 0 的值,我应该以某种方式将值“close”或“fclose”返回给用户。
但无论我返回什么值,我的 close 行为都会像一切正常的情况一样。 为了确保我用一个简单的'return(-1);'替换了所有的 release() 代码并编写了一个程序来打开/写入/关闭 /proc 条目,并打印关闭返回值(和 errno)。无论我给出什么值,它总是返回“0”。
行为与 'fclose' 相同,或者使用 shell 机制(echo "..." >/proc/my/entry)。
关于这种奇怪行为的任何线索不是我发现的许多教程中声称的吗?
顺便说一句,我在 64 位系统上使用 RHEL5 内核(2.6.18,redhat 修改)。
谢谢。
问候,
亚尼克
【问题讨论】:
标签: linux-kernel kernel