使用std::system()可执行系统命令,需包含cstdlib头文件,传入命令字符串,返回值表示执行结果。示例:Linux下用"ls -l"列出文件,Windows下用"dir"。返回0表示成功,非0表示失败,可用于判断命令执行状态。注意跨平台命令差异、避免用户输入拼接以防命令注入,且无法直接获取输出。如需捕获输出,应使用popen()。频繁调用性能较差,复杂场景建议用更安全的进程API。

在C++中执行系统命令,最常用的方法是使用标准库中的 std::system() 函数。这个函数可以调用操作系统的命令行接口来执行外部命令,适用于Windows和Linux等平台,但具体命令需要根据操作系统调整。
1. 使用 std::system() 执行系统命令
std::system() 定义在 cstdlib 头文件中,其原型为:
int system(const char* command);参数 command 是要执行的系统命令字符串,返回值表示命令执行结果(不同平台含义略有不同)。
示例:列出当前目录文件(Linux/macOS)
立即学习“C++免费学习笔记(深入)”;
#include iostream>#include
int main() {
std::system("ls -l");
return 0;
}
示例:显示Windows目录内容
JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也
#include
int main() {
std::system("dir");
return 0;
}
2. 捕获系统命令的执行结果
std::system() 的返回值可用于判断命令是否成功执行:
- 返回值为 0:通常表示命令执行成功
- 返回值非 0:表示执行失败或命令返回错误
示例:检查命令是否执行成功
#include#include
int main() {
int result = std::system("ping -c 1 google.com");
if (result == 0) {
std::cout } else {
std::cout }
return 0;
}
3. 注意事项与安全建议
虽然 std::system() 简单易用,但也存在一些限制和风险:
- 依赖操作系统的命令解释器(如 shell 或 cmd),跨平台时需注意命令差异
- 直接拼接用户输入到命令中可能导致命令注入漏洞,应避免这样做
- 无法直接获取命令的输出内容(如需获取输出,应使用 popen() 或进程重定向)
- 性能开销较大,频繁调用会影响程序效率
如果需要读取命令输出,可结合 popen() 和 pclose()(POSIX系统):
#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() 是最直接的方式,适合简单场景。复杂需求建议使用更安全、可控的进程创建API。










