【问题标题】:Linux Kernel module Atomic modeLinux内核模块原子模式
【发布时间】:2014-03-01 08:14:25
【问题描述】:

我正在开发 linux 内核模块来执行读/写操作。 它读取输入文件并将内容写入输出文件。 我必须在我的代码中引入原子模式。 我想知道是否有办法在原子模式下部分写入的情况下恢复写入文件的更改。

我想删除我写入输出文件的所有内容,以防我的程序出错。

请回复。

【问题讨论】:

  • 我认为这是不可能的。写入(例如 2Gb 缓冲区)可能需要无限(即大量)时间。而且您不想在内核中使该原子成为原子。
  • 我想为小文件(小于 1 mb)做这个。
  • 您为什么认为需要为此目的编写内核模块?
  • 我不知道你想要达到什么目的,但我敢打赌,在内核方面这样做肯定是错误的。

标签: c linux linux-kernel atomic


【解决方案1】:

我想删除我写入输出文件的所有内容,以防我的程序出错。

我会避免为此目的开发内核模块。

您可以简单地在 shell 或应用程序代码中执行此操作:write(2) 进入某个临时文件,然后 rename(2) 成功时该文件或 unlink(2) 失败时该文件。或者您可以在某些 shell 脚本中执行此操作(例如,将 stdout 重定向到临时文件,然后将 mvrm 重定向到它)。您需要更多地了解inodes 是什么。

如果您坚持使用与内核相关的内容,请考虑 FUSE

注意:内核代码通常不会写入文件。只有应用程序代码在写入文件,使用内核中的一些 filesystem 代码。

PS:您可能对inotify(7) 感兴趣。

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2016-03-25
    • 2015-09-21
    • 1970-01-01
    相关资源
    最近更新 更多