我是新的C和我一直在研究有關叉過去兩個星期後殺死父母,我必須解決這個問題,我的手術系統類:Ç叉,返回其PID
「你必須使用分叉創建一個「重量級」過程,然後第一個進程必須等待第二個(新的)返回其父ID,然後它必須殺死它的父級並完成「
我認爲說明是相當混亂,這是我的代碼到目前爲止(正如我所說,我是C新手,所以我一直在調查) 我的問題似乎是,父母甚至沒有等待子進程返回其ID,因爲在那之後,孩子正在殺死父母arent,所以我想我正在創建子進程,並且在運行時會終止父進程,而不是讓父進程等待子進程。 (這是我認爲對指令感到困惑的部分) 我想知道更多關於叉子和流程的信息,比如它們背後的邏輯,所以在編碼時我可以更加確定。 謝謝!
#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;
}
說實話,這句話 - 即使在讀了兩遍之後 - 對我來說沒有任何意義。在所有情況下,我都可以想到已經退出的進程正在被殺死。 – drahnr 2013-03-09 18:26:43
我不明白你應該做什麼,但父母沒有等待的原因是因爲它啓動了「睡眠」,但是孩子被設置爲立即殺死它,所以這樣做。 – teppic 2013-03-09 18:38:07
你們都是對的,我的意思是,我認爲這句話很混亂,但這是老師給我們的方式。這就像: -create - 創建子進程 -the家長等待孩子 -the子進程殺死父(這是我很困惑的部分),並完成 – dlvx 2013-03-09 18:44:38