【C/C++】执行指令并获取输出

执行一条系统命令,并把执行结果输出到一个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命令的输出可以获取到所有进程的信息。

工程地址:https://coding.net/u/linchaolong/p/GetCMDOut/git

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值