繁体   English   中英

LD_PRELOAD,bash和printf

[英]LD_PRELOAD, bash and printf

我有一个共享对象,它通过init 属性执行一些printf() 很简单 它只是告诉我一些设置的变量。

当我执行LD_PRELOAD=mylib.so ./program.sh -flagsprogram.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM