看板 Grad-ProbAsk 關於我們 聯絡資訊
恐龍本題目 3.1 Using the program shown in Figure 3.30, explain what the output will be at Line A. Figure 3.30: #include <sys/types.h> #include <stdio.h> #include <unistd.h> int value = 5; int main() { pid t pid; pid = fork(); if (pid == 0) { /* child process */ value += 15; return 0; } else if (pid > 0) { /* parent process */ wait(NULL); printf("PARENT: value = %d",value); /* LINE A * return 0; } } 解答: Answer: The result is still 5 as the child updates its copy of value. When control returns to the parent, its value remains at 5. 奇怪有wait的時候父不是會等子做完嗎? 這樣value應該有更新成20了吧 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.77.167.64 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1666496987.A.2C2.html
KaryuuIssen: 如同解答寫的 子程序的變數會是副本 跟父程序不相干 10/23 13:03
jemmy9211: data section 是分開的 10/23 15:57