目前遇到问题是。
system("unzip /opt/comm/ETJ-N5-WEB.zip -o -p -d /opt/comm/");
在单独的二进制可执行文件里。这句成功执行了。
但用在cgic里面就不行。
进程状态:
769 root 884 S ./boa
1995 root 2152 S ./webUpdate
2002 root 808 S /bin/sh -c unzip /opt/comm/ETJ-N5-WEB.zip -o -q -d /
2003 root 860 R unzip /opt/comm/ETJ-N5-WEB.zip -o -q -d /opt/comm/
2004 root 804 R ps
猜测可能原因:
2002 root 808 S /bin/sh -c unzip /opt/comm/ETJ-N5-WEB.zip -o -q -d /
这个进程。后面的命令字符串不全。导致执行不成功。
解决办法:
将命令改短点。测试成功
unzip /opt/comm/ETJ-N5-WEB.zip -o -p -d /opt/comm/
unzip ../../ETJ-N5-WEB.zip -d /opt/comm/ -o -q
原理分析:
system()函数调用/bin/sh来执行参数指定的命令,/bin/sh 一般是一个软连接,指向某个具体的shell,比如bash,-c选项是告诉shell从字符串command中读取命令;
system函数原理链接
/bin/bash -c 作用解释