从c程序中查找后台进程的pid

时间:2012-06-04 10:20:34

标签: c unix

我正在编写一个程序来创建一个shell来处理基本功能,例如执行基本命令,管道,重定向,执行后台进程。但是我无法杀死后台进程,我需要知道pid()后台进程,以便我可以发送一个与pid一起的kill调用。任何想法如何从ac pogram获取后台进程的pid()? 为了运行命令,我将命令行的输入转换为数组,解析它并将命令放在arr [0]中以及后续索引中的后续参数中,我将系统的PATH转换为另一个数组并将它们存储为字符串通过使用strtok和delim选项为:,在此之后我将路径与命令连接,然后执行execv()。

我被困在这个部分,我必须杀死一个后台进程。任何建议都会非常有帮助。

提前致谢。

3 个答案:

答案 0 :(得分:1)

你应该这样做:

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

int main()
{
    pid_t pID = fork();
    if (pID == 0) {
        execl("/bin/ls", "/bin/ls", "-r", "-t", "-l", (char *) 0);
    } else {
        waitpid(pID, NULL, 0); // wait for child process
    }
}

答案 1 :(得分:1)

fork返回父进程中子进程的PID,将其存储在某个地方,然后用它来杀死?

答案 2 :(得分:0)

您可以拨打getpid()(在子女孩中),或者在致电fork()时将孩子的pid返回给父母