我是C语言新手,过去两周一直在研究forks,我必须为我的操作系统课解决以下问题:
“您必须使用fork创建一个“重量级”进程,然后第一个进程必须等待第二个进程(新进程)返回其父ID,然后它必须杀死其父进程并结束”
我认为这些指令相当令人困惑,这是我到目前为止的代码(正如我所说,我是C语言新手,因此一直在研究)。 我的问题似乎是父进程甚至没有等待子进程返回其ID,因为子进程在那之后就杀死了父进程,因此我认为我正在创建子进程,并且当它运行时,最终会杀死父进程,不让父进程等待子进程执行。(这就是我认为指令混乱的部分) 我想更多地了解fork和进程,以及它们背后的逻辑,这样我编写代码时就可以更加自信。 谢谢!
#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;
}
sleep
,但子进程被设置为立即终止它,所以就这样做了。 - teppic