linux c 调用 system 执行shell脚本失败
本人编写了一个c程序 program_a,program_a中通过system函数调用一个shell脚本执行文件shell_b
system("./shell_b");
shell脚本shell_b中有一段关于数据库更新的操作
sqlite3 abc.db < cba.sql
上面这句语句没有实现预期的数据库更新要求
但我通过CRT登入,手动执行shell脚本shell_b
./shell_b
脚本执行成功,数据库也对应更新了
然后我将shell_b 中的语句sqlite3 abc.db < cba.sql 改为绝对路径 /usr/sbin/sqlite3 abc.db < cba.sql
再启动program_a,程序执行成功,数据库能够更新,请问这是为什么
[解决办法]
system("./shell_b");这是指你程序运行的目录下运行一个shell_b,目录不对的话 不成功,你说吧里面改成绝对路径就可以、那就肯定是路径你自己没处理好;
另外system("& ./shell_b");最好改成这样,不然代码会停在这个函数
[解决办法]
是外部命令还是内部命令,路径是否正确设置,是否运行权限