答案是使用std::system()函数可执行系统命令,需包含cstdlib头文件,通过传入const char*类型命令字符串调用,返回值表示执行是否成功;跨平台时应根据预定义宏选择对应命令如_WIN32或__linux__;若需获取输出可用popen()函数读取管道内容,但应注意避免命令注入风险。

在C++中调用系统命令,最常用的方法是使用标准库中的 std::system() 函数。这个函数定义在 cstdlib 头文件中,可以执行操作系统支持的任意命令。
使用 std::system() 执行系统命令
std::system() 接收一个C风格字符串(const char*),表示要执行的命令。命令会通过操作系统的默认shell来运行。
示例代码:
#include iostream>#include
int main() {
std::cout int result = std::system("dir"); // Windows 下列出目录
// int result = std::system("ls -l"); // Linux/macOS 下使用
if (result == 0) {
std::cout } else {
std::cout }
return 0;
}
跨平台命令注意事项
不同操作系统支持的命令不同,编写跨平台程序时需要判断平台:
立即学习“C++免费学习笔记(深入)”;
JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也
- Windows 常用命令如:dir, ping 127.0.0.1
- Linux/macOS 常用命令如:ls, ps aux
可通过预定义宏区分平台:
#if defined(_WIN32)std::system("dir");
#elif defined(__linux__)
std::system("ls -l");
#else
std::system("ls");
#endif
获取命令输出与更安全的替代方案
std::system() 只能知道命令是否成功,无法直接获取输出内容。如果需要读取命令输出,可考虑以下方法:
- 将命令结果重定向到临时文件,再用C++读取文件
- 在Linux下使用 popen() 函数(需包含 cstdio)
示例(Linux/macOS):
#include#include
int main() {
FILE* pipe = popen("ls", "r");
if (!pipe) return -1;
char buffer[128];
while (fgets(buffer, sizeof(buffer), pipe)) {
std::cout }
pclose(pipe);
return 0;
}
基本上就这些。std::system() 简单直接,适合快速调用系统命令,但要注意安全性,避免拼接不可信输入,防止命令注入风险。










