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