• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
DeemonLiang
博客园    首页    新随笔    联系   管理    订阅  订阅

c++通过管道pipe获取cmd输出的字符

#include <stdio.h>
#include<iostream>
#include<string>
using namespace std;

// 描述:execmd函数执行命令,并将结果存储到result字符串数组中
// 参数:cmd表示要执行的命令
// result是执行的结果存储的字符串数组
// 函数执行成功返回1,失败返回0
int execmd(char* cmd,char* result) {
char buffer[128]; //定义缓冲区
FILE* pipe = _popen(cmd, "r"); //打开管道,并执行命令
if (!pipe) return 0; //返回0表示运行失败

while(!feof(pipe)) {
if(fgets(buffer, 128, pipe)){ //将管道输出到result中
strcat(result,buffer);
}
}
_pclose(pipe); //关闭管道
return 1; //返回1表示运行成功
}

int main(){
char result[1024*4]=""; //定义存放结果的字符串数组
if(1==execmd("rasdial",result)){
printf(result);
cout<<result;
}
system("pause"); //暂停以查看结果
}

posted @ 2015-10-20 22:42  DeemonLiang  阅读(2475)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3