#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <cstdlib>
#include <iostream>
using namespace std;
std::string get_cmd_result(char* cmd) {
FILE *fp;
std::string str_result;
char result[256];
memset(result, 0, sizeof (result));
if ((fp = popen(cmd, "rt")) == NULL) {
printf("the command %s not exist\n", cmd);
pclose(fp);
return 0;
}
while (fgets(result, sizeof (result), fp) >0) {
//printf("Pipe: %s", result);
str_result=str_result+std::string(result);
}
pclose(fp);
return str_result;
}
int main(int argc, char** argv) {
string str_result;
str_result=get_cmd_result("ls -l");
cout<<"str_result:\t"<<str_result<<endl;
return 0;
}
VC
std::string get_cmd_result(char* cmd) {
FILE *fp;
std::string str_result;
char result[256];
memset(result, 0, sizeof (result));
if ((fp = _popen(cmd, "rt")) == NULL) {
TRACE("the command %s not exist\n", cmd);
_pclose(fp);
return 0;
}
while (fgets(result, sizeof (result), fp) >0) {
TRACE("Pipe: %s", result);
//fflush(stdout);
str_result=str_result+std::string(result);
}
_pclose(fp);
return str_result;
}
本文介绍了一个使用C++实现的函数get_cmd_result,该函数能够执行外部命令并返回命令的输出结果。适用于需要从C++程序中调用shell命令并处理其输出的应用场景。

2527

被折叠的 条评论
为什么被折叠?



