使用程序名称查找进程ID

时间:2017-09-14 13:17:01

标签: c linux unix process pid

我的程序收到一个字符串(一个shell脚本的路径)作为输入。现在我必须启动该shell脚本并找出它的进程ID。

我正在使用system()函数启动shell脚本,之后使用popen()ps -aef | grep "ShellScript"来获取其PID。

有人告诉我,有更好的方法可以做到这一点。如果多个脚本同时运行,我这样做会产生错误的PID。

启动后获取给定脚本名称的PID的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

首先,您不应使用system()

更好的方法是使用fork(),它会返回PID>如果您在父进程中则为0,如果您在孩子中,则为return 0。 任何其他返回satus都是错误,并且相应地设置errno

当您在子进程中时,您应该exec您的命令,而如果您想要避免拥有僵尸进程或处理{{1,那么您应该在父进程中wait信号。

请务必阅读SIGCHLD以获得更好的见解。

这是一个简短的例子

man