温馨提示×

linux c++脚本怎么自动化

小樊
35
2026-10-11 00:24:38
栏目: 编程语言

在 Linux 下用 C++ 写脚本并实现自动化,通常有几种常见思路和做法,取决于你说的“脚本”是指:

  1. 用 C++ 代替 shell 脚本做自动化任务
  2. 用 C++ 调用 shell / 系统命令
  3. 让 C++ 程序定时/自动运行
  4. 构建一套自动化编译/部署流程

下面我按常见场景给你一个清晰总结。


一、用 C++ 写“自动化脚本”(替代 shell)

C++ 本身不是脚本语言,但完全可以像脚本一样用。

1️⃣ 写一个简单的 C++ 自动化程序

#include <cstdlib>
#include <iostream>

int main() {
    system("ls -l");
    system("cp a.txt b.txt");
    system("echo done");
    return 0;
}

编译并运行:

g++ auto.cpp -o auto
./auto

✅ 适合:文件处理、批量任务、调用命令


二、C++ 调用 Linux 命令(推荐方式)

方法 1:system()(最简单)

system("mkdir -p build && cd build && cmake ..");

⚠️ 缺点:不安全、难捕获输出


方法 2:popen()(可获取输出)

#include <cstdio>
#include <iostream>

int main() {
    FILE* pipe = popen("ls", "r");
    char buf[128];
    while (fgets(buf, sizeof(buf), pipe)) {
        std::cout << buf;
    }
    pclose(pipe);
}

方法 3:<filesystem> + POSIX(更专业)

#include <filesystem>
namespace fs = std::filesystem;

fs::copy("a.txt", "b.txt", fs::copy_options::overwrite_existing);

三、让 C++ 程序“自动化运行”

1️⃣ 用 cron 定时执行

crontab -e

示例(每分钟执行):

* * * * * /home/user/auto/auto >> log.txt

2️⃣ 用 systemd(服务器推荐)

创建服务:

# /etc/systemd/system/auto.service
[Unit]
Description=Auto Task

[Service]
ExecStart=/home/user/auto/auto
systemctl start auto

四、C++ 自动化编译(CI 思路)

简单 make 自动化

all:
	g++ main.cpp -o main
make

CMake 自动化

cmake -B build
cmake --build build

五、C++ + Shell 混合自动化(最常用)

✅ 推荐模式

  • Shell:调度、环境
  • C++:核心逻辑
#!/bin/bash
g++ task.cpp -o task
./task

加可执行权限:

chmod +x run.sh
./run.sh

六、如果你想要“像 Python 一样写脚本”

可以用:

  • C++20 <std::process>(未来)
  • 第三方库
    • boost.process
    • subprocess(C++17)

示例(boost):

boost::process::system("ls");

七、总结选型建议

需求 推荐方式
简单自动化 C++ + system
定时任务 cron / systemd
复杂流程 Shell 调 C++
服务器长期运行 systemd
工程化 CMake + CI

如果你能说清楚:

  • 是 运维自动化 / 编译自动化 / 测试自动化 / 机器人/嵌入式
  • 是否是 服务器环境

我可以直接给你一套可抄的模板。

0 踩