淺析Unix操作系統(tǒng)下進(jìn)程
今天我們來學(xué)習(xí)一些Unix操作系統(tǒng)進(jìn)程之間的知識(shí)。這部分知識(shí)很重要,所以我們應(yīng)好好的學(xué)習(xí)這部分知識(shí)。進(jìn)程通訊是unix中很重要的知識(shí)。
進(jìn)程是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ);是一個(gè)正在執(zhí)行的程序;計(jì)算機(jī)中正在運(yùn)行的程序?qū)嵗?;可以分配給處理器并由處理器執(zhí)行的一個(gè)實(shí)體;由單一順序的執(zhí)行顯示,一個(gè)當(dāng)前狀態(tài)和一組相關(guān)的系統(tǒng)資源所描述的活動(dòng)單元。
產(chǎn)生一個(gè)新的Unix操作系統(tǒng)進(jìn)程主要有以下3種方法:
1,fork調(diào)用;
2,System調(diào)用;
3,Exec調(diào)用;
我們常說的進(jìn)程通訊編程主要有以下3種方法:
1,Message queue隊(duì)列編程;
2,Tcp/IP socket編程;
3,共享內(nèi)存編程;
一、Unix操作系統(tǒng)進(jìn)程調(diào)用
1,產(chǎn)生進(jìn)程Fork調(diào)用例子:
功能:創(chuàng)建一個(gè)新的進(jìn)程.
語法:#include unistd.h
說明:本系統(tǒng)調(diào)用產(chǎn)生一個(gè)新的進(jìn)程, 叫子進(jìn)程, 是調(diào)用進(jìn)程的一個(gè)復(fù)制品.
調(diào)用進(jìn)程叫父進(jìn)程, 子進(jìn)程繼承了父進(jìn)程的幾乎所有的屬性:
實(shí)際UID,GID和有效UID,GID.環(huán)境變量.附加GID.調(diào)用exec()時(shí)的關(guān)閉標(biāo)志.UID設(shè)置模式比特位.GID設(shè)置模式比特位.進(jìn)程組號(hào).會(huì)話ID.控制終端.當(dāng)前工作目錄.根目錄.文件創(chuàng)建掩碼UMASK.文件長度限制ULIMIT.預(yù)定值, 如Unix操作系統(tǒng)優(yōu)先級(jí)和任何其他的進(jìn)程預(yù)定參數(shù), 根據(jù)種類不同決定是否可以繼承.
還有一些其它屬性.但Unix操作系統(tǒng)子進(jìn)程也有與父進(jìn)程不同的屬性:
進(jìn)程號(hào), 子進(jìn)程號(hào)不同與任何一個(gè)活動(dòng)的進(jìn)程組號(hào).父進(jìn)程號(hào).
子進(jìn)程繼承父進(jìn)程的文件描述符或流時(shí), 具有自己的一個(gè)拷貝并且與父進(jìn)程和其它子進(jìn)程共享該資源.
子進(jìn)程的用戶時(shí)間和Unix操作系統(tǒng)時(shí)間被初始化為0.子進(jìn)程的超時(shí)時(shí)鐘設(shè)置為0.子進(jìn)程的信號(hào)處理函數(shù)指針組置為空.子進(jìn)程不繼承父進(jìn)程的記錄鎖.
返回值: 調(diào)用成功則對(duì)子進(jìn)程返回0, 對(duì)父進(jìn)程返回子進(jìn)程號(hào), 這也是最方便的區(qū)分父子進(jìn)程的方法. 若調(diào)用失敗則返回-1給父進(jìn)程,子進(jìn)程不生成.
這樣,我們就介紹完了關(guān)于Unix操作系統(tǒng)進(jìn)程之間的知識(shí)。希望大家能夠了解更多。
【編輯推薦】