执行一条系统命令,并把执行结果输出到一个buffer。这种方法把输出直接写入内存,所以速度很快。
#include
#include
#include
// 输入一个指令,并把输出写入到out
int execmd(const char* in, char* out){
// 通过管道把结果输出到内存
FILE* pipe = _popen(in,"r"); // 第一个参数是指令字符串,第二个参数是模式(r:读,w:写)
// _popen函数用于执行一条指令并把结果输出到内存中的文件对象
if (!pipe)
{
return 0; // 无输出,直接返回
}
char buff[128] = {0};
while (!feof(pipe))
{
// 从文件中读取一行
if (fgets(buff, 128, pipe))
{
// 连接字符串
strcat(out, buff);
}
}
_pclose(pipe);
return 1;
}
char in[50] = {0};
char out[8192] = {0};
//char out[4096] = {0};
// 从标准输入读取一个指令
scanf("%s",in);
// 执行指令并把结果输出到out
execmd(in, out);
// 打印命令执行的结果
printf("\n\n%s",out);
// 执行tasklist命令并判断是否打开了QQ
char* p = strstr(out,"QQ.exe");
if (NULL != p)
{
printf("\n is open qq %c \n",*p);
}else{
printf("\n is not open qq \n");
}
通过获取系统命令输出,可以很方便的实现一些功能,如windows下获取tasklist命令的输出可以获取到所有进程的信息。