当前位置: 技术问答>linux和unix
关于用system去调用shell命令时获取的返回值的问题,急!!!!!
来源: 互联网 发布时间:2016-10-06
本文导语: 1 #include "common.h" 2 #include 3 #include 4 #define CMD "/bin/cp -rf /home/zwk/work/usb.separator /home/zwk/work/nfs/media" 5 6 int main() 7 { 8 int ret = 0; 9 int rret = 0; 10 ...
1 #include "common.h"
2 #include
3 #include
4 #define CMD "/bin/cp -rf /home/zwk/work/usb.separator /home/zwk/work/nfs/media"
5
6 int main()
7 {
8 int ret = 0;
9 int rret = 0;
10 ret = system(CMD);
11
12 printf("%s(%d): ret = %d WIFIX = %dn", __FILE__, __LINE__, ret, WIFEXITED(ret));
13 rret = WEXITSTATUS(ret);
14 ret /= 256;
15 printf("%s(%d): ret = %d rret = %d n", __FILE__, __LINE__, ret, rret);
16 return 0;
17 }
如题,我想获得cp命令的三种状态的返回值。执行正常,没有目录或文件,设备上没有足够的空间 这三种情况的返回值,但我试了后发现后两种情况在终端上会有相应的正确提示,但是 后两者的 值都是1 很郁闷 是哪里错了 请高手知道 谢谢
|
估计是因为错误信息输出到标准错误流上了
考虑这个试试:
考虑这个试试:
#define CMD "/bin/cp -rf /home/zwk/work/usb.separator /home/zwk/work/nfs/media 2>&1"
|
非0表示失败,看来区分不出来..
考虑使用popen(CMD, "r"),然后解析输出信息如何?
考虑使用popen(CMD, "r"),然后解析输出信息如何?