我有一段代码可以启动另一个程序作为子进程。
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,但这并不总是有效。有清洁剂吗?更可靠的方法吗?
答案 0 :(得分:0)
如果在shell脚本中启动进程,则变量$!
包含刚刚创建的进程的pid。你可以,例如使用echo输出并使用popen()
启动shell脚本并从那里读取pid。