[英]LD_PRELOAD, bash and printf
我有一个共享对象,它通过init 属性执行一些printf()
; 很简单 它只是告诉我一些设置的变量。
当我执行LD_PRELOAD=mylib.so ./program.sh -flags
, program.sh
由于printfs吐出错误:
./program_run: line 16: cd: mylib.so: Startup
.: File name too long
./program_run: line 18: test: too many arguments
然后程序正常启动。 看起来bash脚本在检查变量时被printf()
破坏了。
有解决方法吗?
尝试这个:
LD_PRELOAD=./mylib.so ./program.sh -flags
注意mylib.so前面的路径
我的经验是,最好使用完整路径,例如
LD_PRELOAD=/home/source/mylib/mylib.so ./program.sh -flags
如上所述,请谨慎使用导出。
它可能会导致各种意外的问题。
尝试以下更改:
export LD_PRELOAD=mylib.so ; ./program.sh -flags
您是否在printf()中使用变量参数?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.