有没有办法确定哪个程序是 LD_PRELOAD 的目标程序?
LD_PRELOAD=/path/to/libstuff.so ./stuff <args>
就像在 C/C++ 中构建 libstuff
库以及预加载它时一样,有没有办法确定目标程序是 stuff
?
如果文件是东西
,那么这是一种安全的方法,然后做一些事情,否则就让库消失。
如果不建议这样做
询问的原因是我无法获取
HOME=$WORK_PATH start-stop-daemon --start --chuid servers --quiet --background --nicelevel -1 --pidfile $PIDFILE --make-pidfile --exec $WORK_PATH/program <args>
与 LD_PRELOAD
一起使用,目标是 program
而不是 start-stop-daemon
我不知道是否允许这样偏离主题(抱歉,以防万一),但如果有人可以帮助我,那也会让我很高兴。
提前致谢。
最佳答案
使用 env
程序运行它,该程序修改环境然后调用 exec
:
start-stop-daemon --start --chuid servers --quiet --background --nicelevel -1 --pidfile $PIDFILE --make-pidfile \
--exec env "LD_PRELOAD=/path/to/libstuff.so" "HOME=$WORK_PATH" "$WORK_PATH/program" <args>
关于c - LD_PRELOAD 哪个程序是目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184305/