2017-05-29 25 views
1

標題說明了一切。我正在學習操作系統,我想用C編程語言編寫一個代碼,Parent應該會收到有關完成孫子工作的信息。我該怎麼做,用等待家長應該收到有關孫子工作完成的信息

代碼將有關子作業完成的信息返回給父項。我想和孫子做同樣的事情。

這是我到目前爲止已經試過:

int main(int argc, char * argv[]){ 
    pid_t child, rv; 
    int st;  
    child = fork(); 
    if(child == 0){ 
     sleep(5); 
     return 5; 
    }  
    printf("Child PID = %ld\n", (long)child); 
    rv = wait(&st);  
    printf("wait() = %ld\nst = %x\n", (long)rv, st); 
    printf("Child exit code = %d\n", WEXITSTATUS(st)); 
    return 0; 

} 
+0

你真的是指父母和*盛大的孩子,而不僅僅是父母和孩子嗎?你到目前爲止嘗試過什麼?它是如何工作,或不工作?請花一些時間[閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask),並學習如何創建[最小,完整和可驗證示例](http:/ /stackoverflow.com/help/mcve)。 –

回答

2

讓撥打我們的流程如下:

t1 - Parent process 
t2 - Child process 
t3 - Grandchild process 

這樣做將是以下流方式:

  1. t1創建子進程t2
  2. t1等待子進程t2退出狀態

現在,父t1進程受阻,等待子進程t2結束。

  1. 使子進程t2創建自己的子進程t3
  2. t2等待子進程t3

現在t3運行,完成並返回退出狀態爲父t2t2將運行並將該狀態返回給其父母t1。這樣,您將t3的退出狀態一直傳播到t1

相關問題