int status;
fp = popen("xxxx", "r");
if(fp == NULL) {
printf("popen failed errno=%d", errno);
//如果popen是因为fork或者pipe调用失败的话,errno也会被fork/pipe设置
}else {
while(fgets(line, sizeof(line), fp)) {
//读取命令的标准输出,注意没有标准出错,如果需要的话,我想命令可以写成 xxx 2>&1
}
status = pclose(fp);
if(status == -1) {
//pclose失败了,一般来说错误是ECHILD,这是因为pclose使用了waitpid(),而此时waitpid()失败
}else {
//status是所执行的命令的退出码,可以使用这个来检查命令是否执行成功
//可以使用WIFEXITED, WEXITSTATUS之类来查看。但好像一般大家都不检查pclose()返回哦
}
阅读(1043) | 评论(0) | 转发(0) |