今天偶然間發現乙個問題,就是fork的時候莫民奇妙的,多出了不必要 程序,然後自己寫了個小小測試程式,問題依舊,沒研究明白,貼出來請高手指教!!!!小弟先謝謝了
測試**:
void fun()
int main(int argc,char* argv)
else if(sock_fd1 == 0)
else
printf("-----------------------------\n");
sock_fd2 = fork();
if(sock_fd2 < 0)
else if(sock_fd2 == 0)
else
return 0;
}結果:
pid[4135]
-----------------------------
ppid[4135] pid[4136] g_var[99]
ppid[1] pid[4136] g_var[109]
ppid[1] pid[4138] g_var[109]
ppid[1] pid[4138] g_var[119]
問題:1、為什麼會有4個程序出現,實際fork出了3個程序?
2、為什麼除了第一列印出ppid為4135,後面所有列印ppid都是1,即使是在第一次fork的程序中呼叫fun()時,第二次列印的ppid都變了??
3、根據列印的結果分析,又兩個程序呼叫fun()時,g_var的初始值都是99,為什麼會這樣,靜態變數不是存放在堆中的靜態變數區麼,每次呼叫後g_var的都該變化才對啊??
哪位大神能幫分析分析,不剩感激!!!
fork程序數的問題
include int main 問除了第乙個父程序,這個程式到底建立了多少程序?這道題主要考了兩個知識點,一是邏輯運算子執行的特點 二是對fork的理解。如果有乙個這樣的表示式 cond1 cond2 cond3 這句 會怎樣執行呢?1 cond1為假,那就不判斷cond2了,接著判斷cond3 ...
Linux程序管理 fork 和寫時複製
寫時複製技術最初產生於unix系統,用於實現一種傻瓜式的程序建立 當發出fork 系統呼叫時,核心原樣複製父程序的整個位址空間並把複製的那乙份分配給子程序。這種行為是非常耗時的,因為它需要 為子程序的頁表分配頁面 為子程序的頁分配頁面 初始化子程序的頁表 把父程序的頁複製到子程序相應的頁中 建立乙個...
npm run dev時遇到的問題
第一篇部落格 npm run dev時 19 verbose npm v6.14.4 20 error code elifecycle 21 error errno 1 22 error vue admin template 4.2 1 dev vue cli service serve 22 er...