首页 > 解决方案 > 用于挂钩 open() 的 LD_PRELOAD 仅适用于 proc 文件系统

问题描述

我正在尝试映射我的程序创建和打开的所有文件。为此,我实现了自己的open()函数,将文件路径参数写入输出文件,然后调用原始的open(). 使用LD_PRELOAD我成功地挂钩 proc 文件系统open(),但不是直接open()在我的代码中。

以下代码被LD_PRELOAD: system("echo text > /user/prog");

以下 cose 不被LD_PRELOAD: open("/user/prog", O_RDWR, O_CREAT);

这两个代码行位于同一个文件中,彼此相邻。
这可能是什么原因?

标签: system-callsprocld-preload

解决方案


推荐阅读