我是 C 的新手,过去两周我一直在研究分叉,我必须为我的 Operative Systems 课程解决这个问题:
“您必须使用分叉创建一个“重量级”进程,然后第一个进程必须等待第二个(新进程)返回其父 ID,然后它必须杀死其父进程并完成”
我认为说明很混乱,这是我到目前为止的代码(正如我所说,我是 C 新手,所以我一直在调查)我的问题似乎是父进程甚至没有等待子进程返回它的id,因为在那之后,孩子正在杀死父母,所以我想我正在创建子进程,当它运行时它会在最后杀死父母,而不是让父母等待孩子执行。(这是我认为对指令感到困惑的部分)我想了解更多关于分叉和进程的信息,比如它们背后的逻辑,以便在编码时更加确定。谢谢!
#include <sys/types.h>
#include <wait.h>
#include <unistd.h>
#include <stdio.h>
int main() {
pid_t idProceso;
int childState;
idProceso = fork();
if (idProceso == 0){
printf ("child id : %d. parent id %d\n",
getpid(), getppid());
int parent = getppid();
kill(parent, SIGKILL);
printf ("dead parent"); // not sure about it ??
_exit();
}
if(idProceso > 0){
sleep (1);
printf ("parent id : %d. child id %d\n",
getpid(), idProceso);
wait (&childState);
}
return 0;
}