c - 在没有 lseek() 的情况下写入和读取 linux/proc/... 文件系统

标签 c linux file read-write lseek

在此源代码中http://man7.org/tlpi/code/online/dist/sysinfo/procfs_pidmax.c.html文件 /proc/sys/kernel/pid_max 首先简单地读取(使用 read 系统调用)然后简单地写入(使用 write 系统调用).

为什么写之前不需要lseek到开头?我认为文件偏移指针对于读取和写入是相同的(相关书籍的作者是这么说的)。

最佳答案

这是因为 /proc 不是真正的文件系统,所以 pid_max 写入的处理方式不需要任何 seek .我什至不知道这里是否支持搜索。

只是为了让您感受这里的 /proc 文件有多么不同,引用了与 pid_max 特别相关的相当古老但说明性的内核错误:https://bugzilla.kernel.org/show_bug.cgi?id=13090

此链接应该向您解释更多详细信息:T H E /proc F I L E S Y S T E M

最后 developerWorks article "Access the Linux kernel using the /proc filesystem"逐步说明具有/proc FS API 的内核模块代码。这看起来 100% 是您需要的。

关于c - 在没有 lseek() 的情况下写入和读取 linux/proc/... 文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20595834/

相关文章:

c - 将 system() 调用的输出存储到变量中

linux - Grep 源代码(不包括构建文件夹)

perl - 无法在 Perl 中打开子目录中的文件

c - 使用 struct 和 stdin 在 C 中输出的问题

python - 安装 pylinkgrammar 时缺少文件

C 中的编译器错误 - ELSE 语句后的 ‘;’ 标记之前应有 ‘{’

java - 如何从android中的.txt文件中获取字符串

c - 变量默认值

linux - 如何在 Linux 中比较两个大文件?

android - Windows 10在我的应用程序上创建了问题