【发布时间】:2019-11-08 09:03:06
【问题描述】:
我正在从 android Linux 中的另一个可执行文件调用一个可执行文件。以下是相关代码:
...
int status = system("/system/bin/executable");
...
我的要求是不要等待executable 完成执行。表示我想独立于调用它的可执行文件运行executable。
我在互联网上进行了搜索,但没有找到如何使这个系统调用成为非阻塞的。请帮我解决它。
【问题讨论】:
-
在子进程中使用
fork(),然后使用exec()。参见例如“How do fork and exec work?”以及a few other questions here -
你可以像在 shell 中那样做。在命令末尾添加
&:system("/system/bin/executable &");。当然,在这种情况下,您将无法检索可执行文件的状态。 -
@mosvy 使用
fork和exec,您可以使用wait检索状态。 -
@mosvy 我同意,如果你想做的是在它的剂量范围内(在后台运行并且收集状态不是)。我有一段时间没有使用 C,但我认为还有其他库抽象了
fork和exec,但比system更强大。 -
是的,
popen(3)。FILE *p = popen("command >/dev/null", "r"); ... do other stuff ...; exit_status = pclose(p);;-)