1

目标:我想强制 zpaq 备份符号链接,就好像它们是真实文件一样,可能是通过欺骗它(使用 LD_PRELOAD 或某种排序或 FUSE 系统)认为符号链接是实际文件。

我想创建/找到一个库,该库强制程序读取符号链接,因为它们是实际文件,然后使用 LD_PRELOAD (或类似的东西)在该环境中运行程序。

换句话说,当程序调用 readdir() [或其他] 时,符号链接显示为实际文件,而当程序调用 open() [或其他] 时,它打开实际目标文件,而不是符号链接。

有没有办法做到这一点?其他很棒的 zpaq 目前不支持符号链接,并且文件位于不同的驱动器上,所以我也不能使用硬链接。

4

1 回答 1

0

那么问题是什么?您似乎已经了解 LD_PRELOAD;您需要做的就是编写一个库来公开正确的函数并将其放入 LD_PRELOAD 中。 如果您需要,此链接会更详细地解释该过程。

唯一潜在的问题是,在 glibc 中对事物的调用并不总是与您可能期望的符号相关联……例如,对 write 的调用实际上可能会调用__write(如果它没有内联到更低级别的东西)。根据您的优化级别,某些函数调用实际上将被完全删除,例如具有固定长度的 memset。如果您使用_FORTIFY_SOURCE. 我不认为这应该是 readlink 的问题,但你可能只需要 TIAS。

基本上,只要去做。如果它不起作用,那么如果您需要帮助调试,请返回 SO。

于 2015-11-24T22:54:36.320 回答