有没有办法确定LD_PRELOAD是针对哪个程序?
LD_PRELOAD=/path/to/libstuff.so ./stuff <args>
就像在C/C++中构建
libstuff
库并预加载时一样,有没有办法确定目标程序是stuff
?如果文件是
stuff
,则这样做是一种安全的方法,然后执行操作,否则就让lib死了。如果不建议这样做
问的原因是我听不懂
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>