由圖中的對映關係我們可以發現,虛擬位址與實體地址並不是一一對應的,這樣也就會出現一種問題,乙個變數位址相同內容不同,其實是虛擬位址相同,所對應的實體地址不同的原因
那麼是誰管理著虛擬位址空間呢?pcb中有mm_strct管理虛擬位址空間
linux中絕大多數函式出錯返回值都是-1,函式出錯後將錯誤編號放入errno全域性變數中。
char*strerror(error)通過錯誤編號返回對應錯誤的描述資訊,只有錯誤時才描述有效,我們可以用printf(「%s」,strerror(errno))列印出這個錯誤資訊
errno標頭檔案strerror標頭檔案
當然我們現在也可以使用簡單的報錯資訊perror()
fork**:
1 #include2 #include3 int main()
4 11 else if(id==0)
12
15 else
16
19 return 0;
20 }
vfork**:
1 #include2 #include3 int main()
4 11 else if(id==0)
12
15 else
16
19 exit(1);
20 }
~
fork:
vfork:
1.fork()函式會轉入核心執行,父子程序交替執行,而vfork() 子程序先執行,子程序結束父程序執行
2.fork()是子程序拷貝父程序的資料段、**段,vfork()子程序與父程序共享資料段
3.fork寫時拷貝,vfork不進行拷貝動作,所以vfork效能比fork更好,但退出時一定要用exit
如果我們皮一下不用exit會造成什麼結果呢??
所以千萬要記得!!!!
linux程序建立之fork與vfork
乙個現有的程序可以呼叫fork函式建立乙個新的程序。原函式如下 name fork create a child process synopsis include include pid t fork void 返回值 子程序返回0,父程序返回子程序的id,出錯返回 1。測試 如下 include ...
程序建立函式fork與vfork
1.fork 1 函式的功能 建立乙個程序 2 函式的原型 pid t fork void 3 函式的返回值 0 出錯 0 子程序 0 父程序 其值為子程序的識別號 4 標頭檔案 include fork的奇妙之處在於它被呼叫一次,卻返回兩次,它可能有三種不同的返回值。include include...
程序的建立 fork與vfork
目錄 fork函式 fork的使用 vfork函式 fork 與 vfock 都是建立乙個程序,那它們有什麼區別呢?程序的正常終止方法?程序的異常終止 為什麼vfork 子程序中可以呼叫 exit 卻不可以呼叫exit 也不可以直接return呢?標頭檔案 include 函式原型 pid t fo...