私はCを初めて使用し、過去2週間、フォークについて調査してきました。オペレーティングシステムクラスでこの問題を解決する必要があります。
「フォークを使用して「重い」プロセスを作成する必要があります。次に、最初のプロセスは2番目(新しいプロセス)が親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;
}