Linux中fork的使用注意事項
Linux中fork函式用於在一個程式中建立一個新的子程式,先看看其定義:
#include<unistd.h>
#include<sys/types.h>
函式定義: pid_t fork( void);
pid_t 是一個巨集定義,其實質是int, 被定義在#include<sys/types.h>中,雖然fork是被呼叫了一次,但是這個函式卻會返回兩次,
在子程式中,這個函式會返回0,在父程式中這個函式返回的是子程式的程式id(大於0),子程式是對父程式的複製(duplicate)
而不是共享空間。
當一個父程式fork了一個子程式的時候是需要等待這個子程式結束後將這個子程式的資源回收的,但是一般情況下如果parent程式
並沒有等待子程式結束,自己先提前結束的話,init程式會將child程式接管,並且將其資源回收,使用的函式是waitpid
在子程式結束的時候核心會向父程式傳送SIGCHLD訊號,如果父程式將這個訊號遮蔽掉,然後父程式並沒有等待子程式結束那麼
子程式就會變為殭屍程式.(Z)
【參考資料】
1:http://baike.baidu.com/view/1952900.htm
2:man手冊
3:http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part2/
4:http://hi.baidu.com/q%C4%AB%B9%E6%B3%D8q/blog/item/feef2e23a6c15deed6cae2c8.html
5:http://wenku.baidu.com/view/fdf2be956bec0975f465e2b4.html
相關文章
- C中memcpy使用注意事項memcpy
- Oracle使用*的注意事項Oracle
- 2. Go中defer使用注意事項Go
- 使用Google Fonts注意事項Go
- Linux中單引號和雙引號的使用方法及注意事項!Linux
- 說點JSON使用的注意事項JSON
- 使用MyBatis的注意事項有哪些MyBatis
- 使用HTTP的三個注意事項HTTP
- 使用Vue.js的注意事項Vue.js
- 【知識分享】使用linux系統伺服器的注意事項Linux伺服器
- 使用ProForm的useRef()物件的注意事項ORM物件
- Linux中如何刪除檔案?注意事項有哪些?Linux
- TCP使用注意事項總結TCP
- 萬兆網路卡使用注意事項
- Guava HashMultimap使用及注意事項Guava
- MySQL半同步使用注意事項MySql
- 機械硬碟,使用注意事項硬碟
- cookie的使用方法以及注意事項Cookie
- Python Enum 使用的幾點注意事項Python
- ip代理軟體的使用注意事項
- 【知識分享】伺服器使用linux系統注意事項伺服器Linux
- 自學中應該注意的事項
- Go 中修改切片副本的注意事項Go
- golang 中 channel 的詳細使用、使用注意事項及死鎖分析Golang
- Oracle臨時表使用注意事項Oracle
- 不同版本exp/imp使用注意事項
- Select 選擇器使用注意事項
- MCU看門狗使用注意事項
- 伺服器使用安全注意事項伺服器
- HTML基本標籤的使用與注意事項HTML
- uni-app 使用Weex/nvue的注意事項APPVue
- TDengine | taosdump 的使用方法和注意事項
- TDengine|taosdump 的使用方法和注意事項
- ES6中箭頭函式使用的注意事項函式
- RandomAccessFile注意事項randomMac
- @Lombok注意事項Lombok
- 開發及上線中的注意事項
- GO 中的 defer 有哪些注意事項?上Go
- 安裝sybase12.5 for linux注意事項(zt)Linux