【发布时间】:2021-06-05 20:23:13
【问题描述】:
我想使用 c++ 自动化一些简单的任务。例如,我希望在执行 automate 可执行文件时自动创建一个特定的文本文件。但是,当我双击该文件时,会弹出终端。有没有可以添加到我的编译器的选项或添加到我的 automate.cpp 文件的方法,以便终端无头运行?这是我的 .cpp 文件。
#include <filesystem>
#include <fstream>
int main() {
std::ofstream outfile("test.txt");
outfile << "Hello World!" << std::endl;
outfile.close();
std::system("mv test.txt ~/Desktop");
}
【问题讨论】:
-
无关:不要使用
std::system移动文件。使用std::filesystem::rename或 C++17 之前的std::rename。 -
您实际上无法在可执行文件本身中执行任何操作,因为正在发生的事情是 Launch Services 将您的程序视为恰好可以在终端应用程序中打开的 文档 .为了避免这种情况,我认为您要么需要制作另一个应用程序,您可以将这个“文档”与之关联(这将无头执行它),或者实际上将可执行文件转换为 LS 将视为应用程序的东西,例如 @987654323 @ 或 Platypus.
-
非常感谢!当然我已经尝试在谷歌上找到答案,直觉好像我现在不知道如何表达我的问题。
标签: c++ macos terminal g++ executable