gpt4 book ai didi

c++ - 执行外部程序的简单 C++ 跨平台方式

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:42 25 4
gpt4 key购买 nike

用 C++ 执行外部程序并从中获取返回码的简单、优雅且有效的跨平台方法是什么?

int execute(std::string const &path, std::vector<std::string> const &arguments = {})
{
//...
}

由于我们在继续执行之前等待被调用程序完成,因此被调用程序应该使用我们程序的输入/输出/错误流。如果出于多种原因,path 不可执行,则抛出异常(例如 std::invalid_argument)。

显然,不要使用 system()

最佳答案

如果您只需要执行一个程序,则生成一个工作线程并让该线程调用 system:

void executeProgram(std::string programName) {
system(programName.c_str());
}

void execute() {
string programName = "test.cpp";
std::thread worker (executeProgram, programName);
worker.join(); //wait for the worker to complete
}

如果您需要能够产生许多程序,一个线程池类来委托(delegate)工作线程并在完成时加入它们可能更有意义。

关于c++ - 执行外部程序的简单 C++ 跨平台方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29001583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com