LD_PRELOAD, какая программа является целевой

Есть ли способ выяснить, какая программа является целью LD_PRELOAD?

LD_PRELOAD=/path/to/libstuff.so ./stuff <args>

Например, при создании библиотеки libstuff на C/C++ и при ее предварительной загрузке есть ли способ выяснить, что целевой программой является stuff?

И является ли это безопасным способом сделать это, если бы файл был 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

Я не знаю, разрешено ли такое оффтопить (извините, если это так), но если бы кто-то мог помочь мне с этим, это тоже сделало бы мой день.

Заранее спасибо.


person vlieger    schedule 03.10.2014    source источник


Ответы (1)


Запустите его с помощью программы 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>
person Dark Falcon    schedule 03.10.2014