c语言 - 是否可以更改执行子进程的"/proc/self/exe"值?



我正在尝试使用 exec 系统调用来启动另一个可执行文件,但该可执行文件正在使用readlink() on /proc/self/exe来确定其文件位置。我希望它认为它与父可执行文件具有相同的位置,但它而是确定其实际位置。我认为我可以通过使用 LD_PRELOAD 拦截readlink()呼叫来完成这样的事情,但是有没有更简单或更直接的方法来实现这一点?我只在寻找可以在父可执行文件中实现的解决方案,修改子项不是一种选择。

创建可执行文件的链接:


$sudo ln /bin/ls ./ls
[sudo] password for plasser: 
# check it:
$ls -l ls
-rwxr-xr-x 2 root root 110080 mrt 10  2016 ls
#call it:
$./ls -l /proc/self/exe
lrwxrwxrwx 1 plasser uri 0 mrt  3 18:36 /proc/self/exe -> /home/plasser/krant/ls
$

最新更新