Chinaunix首页 | 论坛 | 博客
  • 博客访问: 791502
  • 博文数量: 186
  • 博客积分: 10075
  • 博客等级: 上将
  • 技术积分: 2776
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-06 13:18
文章存档

2012年(2)

2011年(1)

2010年(15)

2009年(56)

2008年(112)

分类:

2008-04-20 19:40:00

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()返回哦
   }
阅读(1019) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~