【问题标题】:Modify "write" System Call in Linux [closed]在 Linux 中修改“write”系统调用 [关闭]
【发布时间】:2021-07-27 05:49:30
【问题描述】:

当系统调用指向某个特定文件时,我想拦截每个写入系统调用并修改写入系统调用的数据,否则执行原始写入系统调用。

现在我可以从那里修改 write 系统调用。另外,我想要 syscall 指向的文件的名称,如何从 write syscall 中的文件描述符参数中获取它。

我尝试了 LD_PRELOAD 技巧,但它仅适用于库调用,不适用于系统调用。 我正在使用 ubuntu 18.04。

【问题讨论】:

  • 你究竟为什么要这样做?
  • 我想将日期和 PID 附加到每个应用程序生成的每个日志中,然后再将它们存储在 var/log 目录中的日志文件中。
  • 嗯,这肯定是用锤子敲碎坚果。

标签: linux-kernel operating-system system-calls kernel-module


【解决方案1】:

我建议你写自己的小设备驱动程序(我建议看简单的杂项设备驱动程序)。因此,您将有一个文件,您可以在其中实现 write/read/open/close 系统调用。这样,您可以将文件保存在/dev/ 文件系统中,并“拦截”对文件misc dev example 的所有操作。如果您不想在内核空间中实现所有内容,您可以查看 FUSE 驱动程序(您只需将 fuse 文件系统安装在 fs 中的某个位置,您还可以控制文件操作,但现在从用户空间)fuse docsfuse example

【讨论】:

    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 2012-02-22
    • 2021-02-25
    • 1970-01-01
    • 2011-02-14
    • 2013-02-20
    • 2014-03-20
    • 1970-01-01
    相关资源
    最近更新 更多