Linux获取通过execl脚本启动的程序的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,而不是启动过程的PID。我可以检查程序的路径是否包含" .sh"并将PID递增,但这并不总是可行。有清洁剂吗?更可靠的方法?

如果在shell脚本中启动一个进程,则变量$!包含刚刚创建的过程的pid。您可以例如使用Echo输出此内容,然后使用popen()启动Shell脚本,然后从那里读取PID。

最新更新