21xrx.com
2024-11-10 00:24:10 Sunday
登录
文章检索 我的文章 写文章
C++ 如何执行 CMD 命令
2023-07-04 23:20:53 深夜i     --     --
C++ CMD命令 执行 程序设计 系统调用

C++ 是一种高级编程语言,可以用于开发各种类型的应用程序。但有时候,我们需要在 C++ 程序中运行一些操作系统命令,比如执行 CMD 命令。下面介绍如何在 C++ 程序中执行 CMD 命令。

方法一:system 函数

C++ 标准库中提供了 system 函数,可以用该函数执行 CMD 命令。system 函数的原型为:

int system(const char* command);

参数 command 是要执行的 CMD 命令。该函数返回一个整数,表示命令的执行结果。如果命令执行成功,返回值是 0;如果执行失败,返回值是非 0 的值。

下面是一个例子,演示如何使用 system 函数执行 CMD 命令:


#include <iostream>

using namespace std;

int main() {

  system("dir");

  return 0;

}

运行上面的程序会执行 dir 命令,输出当前目录下的文件和子目录列表。

方法二:CreateProcess 函数

如果我们需要在 C++ 程序中执行一些高级的 CMD 命令,比如带参数的命令,或者命令执行过程中需要进行一些处理,就需要使用更强大的函数 CreateProcess。

CreateProcess 是一个 Win32 API 函数,可以用来创建一个新的进程,并在该进程中执行指定的命令。

下面是一个例子,演示如何使用 CreateProcess 函数执行 CMD 命令:


#include <Windows.h>

#include <iostream>

using namespace std;

int main() {

  STARTUPINFO si;

  PROCESS_INFORMATION pi;

  ZeroMemory(&si, sizeof(si));

  si.cb = sizeof(si);

  ZeroMemory(&pi, sizeof(pi));

  TCHAR* cmd = TEXT("cmd /c dir");

  if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {

    cout << "Failed to create process, error code: " << GetLastError() << endl;

    return 1;

  }

  WaitForSingleObject(pi.hProcess, INFINITE);

  CloseHandle(pi.hProcess);

  CloseHandle(pi.hThread);

  return 0;

}

该程序创建了一个 CMD 进程,并在该进程中执行了 dir 命令。注意,CreateProcess 函数的第一个参数指定了进程的可执行文件名称,第二个参数是要执行的命令,第三个参数是进程的安全属性,第四个参数是线程的安全属性,第五个参数指定了是否将新进程作为当前进程的子进程,第六个参数指定了进程的优先级,第七个参数指定了进程的环境变量,第八个参数指定了新进程的工作目录,第九个和第十个参数分别返回创建的进程的信息和线程的信息。

运行上面的程序会执行 dir 命令,输出当前目录下的文件和子目录列表。

总结

在 C++ 程序中使用 system 函数和 CreateProcess 函数都可以执行 CMD 命令,但是 CreateProcess 函数可以更精细地控制进程的创建和命令的执行,在实际开发中更加常用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复