【问题标题】:How to execute system command in parallel in c++如何在 C++ 中并行执行系统命令
【发布时间】:2014-05-11 16:33:35
【问题描述】:

通常当我想从 c++ 代码运行可执行文件时。我只是使用代码:

system("path\to\the\executable param"); 

现在,我想并行运行可执行文件。我使用 2 个线程。第一个线程将调用:

system("path\to\the\executable param1");

第二个线程会调用:

system("path\to\the\executable param2");

但是它并没有像我预期的那样并行运行。

有没有办法解决这个问题?

【问题讨论】:

  • 你所说的“并行”是什么意思?你是男人(大脑例子)system("1.exe 2.exe 3.exe");吗?还是您的意思是使用自己的线程进行异步调用?
  • 在 Windows 中?使用"start [options] program"
  • 您知道如何在字符串文字中使用反斜杠 (\),不是吗?

标签: c++ parallel-processing system executable


【解决方案1】:

您可以运行多个命令,如下所示:

system("path\\to\\the\\executable param1 &");
system("path\\to\\the\\executable param2");

这样两者都将并行运行,并且您的程序不需要为此使用多线程。

【讨论】:

  • 假设 OP 询问的是 Linux/Unix 风格的操作系统。
  • 但是可以检查单独的可执行文件的输出吗?在我的情况下,想要有一种方法来读取启动的可执行文件的输出。
【解决方案2】:
  • 对于 Windows:CreateProcess(参见 MSDN)函数。
  • 对于 *NIX:首先,使用 fork 生成子代码,然后将子代码替换为 execXX(execl、execle、execlp、execv、execvp)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 2011-03-12
    • 2011-03-29
    • 1970-01-01
    • 2021-09-07
    • 2014-04-16
    • 1970-01-01
    相关资源
    最近更新 更多