Linux使用execl通过脚本启动程序的pid

时间:2018-02-11 10:38:49

标签: c++ linux shell pid

我有一段代码可以启动另一个程序作为子进程。

pid = execlp("path-to/program", "path-to/program", nullptr);

这将返回我启动的进程的pid,以便我可以访问它。现在我们需要通过shell脚本启动进程。像这样:

#!/bin/bash
export LD_LIBRARY_PATH=/path-to/program
/path-to/program
#or:
wine /path-to/program.exe

C ++:

pid = execlp("/path-to/shelscript.sh", "/path-to/shellscript.sh", nullptr);

当我现在调用execl时,它将返回shell的pid,而不是已启动的进程。我可以检查程序的路径是否包含" .sh"并将pid递增1,但这并不总是有效。有清洁剂吗?更可靠的方法吗?

1 个答案:

答案 0 :(得分:0)

如果在shell脚本中启动进程,则变量$!包含刚刚创建的进程的pid。你可以,例如使用echo输出并使用popen()启动shell脚本并从那里读取pid。