有没有办法确定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而不是programstart-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>

09-27 03:38