【技术分享】C++ 调用cmd命令
2021-04-10 / 0 评论 / 30 阅读 / 1 点赞

【技术分享】C++ 调用cmd命令

发光的神
2021-04-10 / 0 评论 / 30 阅读 / 正在检测是否收录...

简介

个人感觉:能结合外部系统命令或程序是很关键的,在开发中也会用到很多的库和系统提供的api接口,这样才能使我们的程序功能更加的强大,在C++中能执行CMD命令的函数,有system和popen第一个只会执行命令并不能把返回结果传递到变量上,而第二个正好是可以。

system函数

#include <iostream>

int main()
{
  system("ping 127.0.0.1");
  return 0;
}
输出:
正在 Ping 127.0.0.1 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

127.0.0.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

1.system只能执行,返回的内容不能保存在变量里。

popen函数

#include <iostream>
#include <stdlib.h>
#include <stdlib.h>

using namespace std;

string cmd(const char *cmd, const int buffer)
{
  char _str[buffer];
  string cmd_str;
  FILE *f = popen("ping 127.0.0.1", "r");
  
  while (fgets(_str, buffer, f) != NULL)
  {
    cmd_str += _str;
  }
  return cmd_str;
}
int main()
{
  cout << cmd("dir", 1024);
  return 0;
}
输出:
正在 Ping 127.0.0.1 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

127.0.0.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

1.popen返回的内容可以保存到变量里。

1

评论 (0)

取消
0:00