0

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

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

提前致谢。

4

3 回答 3

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
    }
}
于 2012-06-04T10:50:27.133 回答
1

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

于 2012-06-04T10:50:54.400 回答
0

可以调用getpid()(在 childprosses 中),或者调用fork()时将 child 的 pid 返回给 parent

于 2012-06-04T11:32:46.997 回答