Linux多程序開發(一)程序建立之fork的學習

2021-09-04 01:47:50 字數 993 閱讀 2674

過去一年一直在看作業系統原理,但是只是看,而沒有實際動手去做,導致的結果是現在還不會多程序和多執行緒的開發,在軟體開發這個領域,必須要動手去寫**的,不然永遠也學不會軟體開發,所以,我寫下我做的點滴,也算是和大家分享交流。

# include # include pid_t fork(void)

# include # include # include int main(void)

exit(0);

}

輸出結果:

fork函式非常特殊,一次呼叫兩次返回,也就是說,它有兩個返回值,即呼叫一次,返回兩次。

返回兩次的前提是程序建立成功。

一次是父程序呼叫fork函式的返回值,該返回值是剛剛建立的子程序的id

一次是子程序中的fork函式的返回值,返回0

如果建立失敗返回-1

稍微修改下,讓子程序和父程序交替執行。

# include # include # include int main(void)

while(k>0)

exit(0);

}

對於輸出結果:我們用圖說話

通常fork失敗的原因是父程序擁有的子程序的個數超過了規定的限制,此時error為eagain

如果是可供記憶體不足也會導致程序建立失敗,此時的error值為enomen

總結:1. 子程序有自己唯一的id

2.fork的返回值不同,父程序返回的是子程序的id,子程序返回的則為0

3.不同的父程序id,子程序的父程序id為建立它的父程序的id

4.子程序共享父程序開啟檔案描述符,但父程序對檔案描述符的改變不好影響子程序中的檔案描述符。

5.子程序不繼承父程序設定的檔案鎖

6.子程序不繼承父程序設定的警告

7.子程序的未決訊號集被清空

關於程序建立還有乙個vfork(),我會在隨後的文章裡面詳細介紹這個函式。

建立多程序

encoding utf 8 import sys reload sys sys.setdefaultencoding utf 8 import multiprocessing import time def worker 1 interval print worker 1 time.sleep i...

程序管理 一 程序的概念以及程序的建立

程式一旦跑起來就是乙個程序,程序是乙個可以執行的例項。每個程序都擁有乙個自己的虛擬cpu,但是實際上只有乙個cpu,其只是在各個程序之間快速的切換,這種快速切換就叫做多道程式設計 例子 乙個計算機科學家給女兒做蛋糕,他有做蛋糕用的食譜,廚房中有大量的原料,比如香草 雞蛋 麵粉 糖等等。其中食譜就是程...

14,多程序程式設計 建立程序

建立程序 建立程序函式 fork 函式原型 pid t fork 返回值 標識新建立程序的程序id,0表示子程序 注意,真實的子程序id由getpid 函式獲取 其他大於0的數表示父程序 注意,此時的返回值是子程序的id,父程序id由getpid 函式獲取 負數表示建立失敗。例項原始碼 fork.c...