- 论坛徽章:
- 0
|
本帖最后由 fanxiaoqie 于 2014-09-10 17:19 编辑
这是我makefile工程中调用system的一段代码
status = system(command.c_str());
if(status < 0){
fprintf(stderr,"%s\t error: %s", command, strerror(errno));
return false;
}
if(WIFEXITED(status)){
if(WEXITSTATUS(status) == 0){
fprintf(stderr, "command normal termination, exit status = %d\n",WEXITSTATUS(status));//打印此条语句
return true;
}else{
fprintf(stderr, "command fail, exit status = %d\n",WEXITSTATUS(status));
return false;
}
}else if(WIFSIGNALED(status)){
fprintf(stderr, "command abnormal termination, singal number = %d\n",WTERMSIG(status));
return false;
}else if(WIFSTOPPED(status)){
fprintf(stderr, "process stopped, singal number = %d\n",WSTOPSIG(status));
return false;
}else{
fprintf(stderr, "command exit error, exit status = [%d]\n",WEXITSTATUS(status));
return false;
}
上面这段返回状态判断是借鉴网上的
其中command是一个字符串:/home/XX/softwares/solvers/bin/solver /home/XX/test/file.txt
功能是solver读入file文件,在执行中会产生输出,本来是输出到标准输出屏幕,我通过它给的参数将其重定向了到一个文件,solver不开源
问题是:
在运行程序的时候,每次返回值都显示运行成功,也就是上面代码说明的,但是却没有生成文件(也就是说没有执行command?)
我将command这句话直接在终端上执行是正确的,会生成文件
为什么这样?怎么解决啊?新手完全没有解决方向…………
求大神指教 |
|