2016-10-25 72 views
-3
#include <sys/types.h> 
#include <stdio.h> 
#include <unistd.h> 

int value = 5; 
int main() 
{ 
    pid t pid; 
    pid = fork(); 
    if (pid == 0) { 
    value += 15; 
    return 0;} 
    else if (pid > 0) { /* parent process */ 
     wait(NULL); 
    printf("PARENT: value = %d",value); /* LINE A */ 
       return 0;}} 

創建了多少個子進程並在A行中打印了哪些值?在以下代碼中創建了多少個子進程

+3

什麼阻止你簡單地試用它? – Ari0nhh

+0

請注意,Pico風格並不是真正可接受的(可接受的)C代碼佈局。請選擇[Allman或1TSB]中的一個(https://en.wikipedia.org/wiki/Indent_style),除非有令人信服的理由否則 - 您應該準備好解釋爲什麼這些原因是令人信服的。隨着顯示的草圖縮進,你甚至不會緊跟Pico風格。 –

+0

父進程將打印5.僅創建一個進程。 –

回答

1

你試過了嗎?

只創建單個子項並且父項打印值5,因爲它在父進程中未被修改。全局變量在每個進程中都有一個副本,它們不共享。

+0

是的,其實我剛剛開始學習C,我只是對兒童過程和父母過程有點混淆。 – Alex

+0

「單個孩子被創建並打印5」錯誤:孩子不打印任何東西。孩子的Fork返回值爲0.「因爲它在父進程中沒有修改」錯誤:父/子進程可以根據需要修改值,因此它不會影響其他進程,因爲「值」是一個全局變量,它是重複的在叉子。每個過程都有自己的價值。 –

+1

@TonyTannous:正確的評論,託尼,我承認它可能會混淆我原來的句子。我修改了這句話。 –

相關問題