【发布时间】:2016-01-07 10:31:04
【问题描述】:
我有一个 C++ 程序,我想在 shell 中执行多个命令。 我当前的解决方案使用 system() 函数,如下所示:
return_value = system(SETUP_ENVIRONMENT; RUN_USEFUL_APP_1);
... do_something_else ...
return_value = system(SETUP_ENVIRONMENT; RUN_USEFUL_APP_2);
... do_something_else ...
return_value = system(SETUP_ENVIRONMENT; RUN_USEFUL_APP_3);
...
它可以工作,但是 SETUP_ENVIRONMENT 需要几秒钟,使程序非常慢。但是我每次都必须运行它,因为 system() 每次都在一个新的 shell 中运行。 我希望能够设置我的 shell 一次,然后在其中运行所有命令。
execute_in_shell(SETUP_ENVIRONMENT);
return_value = execute_in_shell(RUN_USEFUL_APP_1);
... do_something_else ...
return_value = execute_in_shell(RUN_USEFUL_APP_2);
... do_something_else ...
return_value = execute_in_shell(RUN_USEFUL_APP_3);
...
我该怎么做?
我在 Linux 上。
【问题讨论】:
-
你可以在管道中打开一个shell并通过它发送命令。
-
@mstruebing:这假设您预先知道要运行哪些程序、何时以及使用哪些参数。管道是更好的解决方案。
-
如何在管道中打开外壳?如果我这样做,我可以看到返回码吗?
-
@oskla129
system的返回值表示命令是否可以执行,而不是命令的结果。