【发布时间】:2011-10-27 07:44:27
【问题描述】:
我有一个共享对象,它通过 attribute 为 init 执行一些 printf()s;很简单。它只是告诉我我设置的一些变量。
当我执行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()s 破坏了。
有解决办法吗?
【问题讨论】:
-
打印到
stderr而不是stdout。 bash 脚本中的许多命令都使用stdout,您不能只向它们添加随机文本。
标签: c linux ld-preload