Linux程序設(shè)計(jì)第6章_第1頁
Linux程序設(shè)計(jì)第6章_第2頁
Linux程序設(shè)計(jì)第6章_第3頁
Linux程序設(shè)計(jì)第6章_第4頁
Linux程序設(shè)計(jì)第6章_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式操作系統(tǒng)應(yīng)用開發(fā)嵌入式操作系統(tǒng)應(yīng)用開發(fā)-Linux程序設(shè)計(jì)程序設(shè)計(jì)陳曉雷第第6章章 進(jìn)程控制進(jìn)程控制n6.1進(jìn)程標(biāo)識(shí)n6.2進(jìn)程創(chuàng)建n6.3執(zhí)行一個(gè)新程序n6.4 等待進(jìn)程完成n6.5進(jìn)程終止與僵死進(jìn)程n6.6system()函數(shù)n6.7進(jìn)程組n6.8會(huì)晤期n6.9控制終端n6.10作業(yè)控制36.1進(jìn)程標(biāo)識(shí)進(jìn)程標(biāo)識(shí)l進(jìn)程進(jìn)程ID(PID):唯一正整數(shù):唯一正整數(shù)0-MAXPID-1l幾個(gè)特殊進(jìn)程:調(diào)度進(jìn)程幾個(gè)特殊進(jìn)程:調(diào)度進(jìn)程PID=0,init進(jìn)程進(jìn)程PID=1lpid_t類型類型: intl#include l#include lpid_t getpid(void);lpid_t g

2、etppid(void);6.2進(jìn)程創(chuàng)建進(jìn)程創(chuàng)建l#include l#include lpid_t fork(void);l進(jìn)程之間的層次關(guān)系:父進(jìn)程、子進(jìn)程進(jìn)程之間的層次關(guān)系:父進(jìn)程、子進(jìn)程lfork()成功返回成功返回l子進(jìn)程:子進(jìn)程:0l父進(jìn)程:子進(jìn)程的父進(jìn)程:子進(jìn)程的PIDlfork()失敗返回:失敗返回:-1,并置,并置errnol例:例:p6-1.c46.2進(jìn)程創(chuàng)建進(jìn)程創(chuàng)建l子進(jìn)程克隆父進(jìn)程子進(jìn)程克隆父進(jìn)程l繼承的特征:繼承的特征:lUID、GID、EUID、EGID、附加、附加GIDl會(huì)晤期會(huì)晤期ID和控制終端和控制終端l調(diào)整用戶調(diào)整用戶ID標(biāo)志和調(diào)整組標(biāo)志和調(diào)整組ID標(biāo)志標(biāo)志

3、l當(dāng)前工作目錄和根目錄當(dāng)前工作目錄和根目錄l文件創(chuàng)建屏蔽文件創(chuàng)建屏蔽maskl信號(hào)屏蔽與設(shè)置信號(hào)屏蔽與設(shè)置l任何打開的文件描述字的執(zhí)行時(shí)關(guān)閉標(biāo)志任何打開的文件描述字的執(zhí)行時(shí)關(guān)閉標(biāo)志FD_CLOEXECl環(huán)境變量環(huán)境變量l所有相連的共享存儲(chǔ)段所有相連的共享存儲(chǔ)段l資源限制資源限制56.2進(jìn)程創(chuàng)建進(jìn)程創(chuàng)建l子進(jìn)程與父進(jìn)程不同的的特殊屬性:子進(jìn)程與父進(jìn)程不同的的特殊屬性:l子進(jìn)程有它自己唯一的子進(jìn)程有它自己唯一的PIDl有各自不同的父進(jìn)程有各自不同的父進(jìn)程IDl子進(jìn)程具有其父進(jìn)程的打開文件描述字副本子進(jìn)程具有其父進(jìn)程的打開文件描述字副本l子進(jìn)程已耗時(shí)的各種時(shí)間子進(jìn)程已耗時(shí)的各種時(shí)間(tms_x)均置

4、為均置為0l子進(jìn)程不繼承父進(jìn)程設(shè)置的文件鎖子進(jìn)程不繼承父進(jìn)程設(shè)置的文件鎖l子進(jìn)程不繼承父進(jìn)程設(shè)置的定時(shí)器,任何懸掛的定時(shí)器均被清除子進(jìn)程不繼承父進(jìn)程設(shè)置的定時(shí)器,任何懸掛的定時(shí)器均被清除l父進(jìn)程的任何懸掛信號(hào)在子進(jìn)程中都被清除,但子進(jìn)程從父進(jìn)程父進(jìn)程的任何懸掛信號(hào)在子進(jìn)程中都被清除,但子進(jìn)程從父進(jìn)程繼承它的信號(hào)屏蔽和信號(hào)動(dòng)作繼承它的信號(hào)屏蔽和信號(hào)動(dòng)作lfork()使用的兩種情況使用的兩種情況l網(wǎng)絡(luò)服務(wù)網(wǎng)絡(luò)服務(wù)lfork()exec()執(zhí)行另一個(gè)程序執(zhí)行另一個(gè)程序lpid_t vfork(void);66.3執(zhí)行一個(gè)新程序執(zhí)行一個(gè)新程序l加載函數(shù)加載函數(shù)exec()lextern char *e

5、nvironlint execl(const char *path, const char *arg0, , (char *)0);lint execlp(const char *file, const char *arg0, , (char *)0);lint execle(const char *path,const char *arg0, ,(char *)0, const char *envp);lint execv(const char *path, const char *argv);lint execvp(const char *file, const char *argv);

6、lint execve(const char *path, const char *argv, const char *envp);l注意:成功:不返回,失?。鹤⒁猓撼晒Γ翰环祷?,失?。?1、errnol凡是與進(jìn)程有關(guān)的屬性保持不變,與程序映像有關(guān)的屬性變凡是與進(jìn)程有關(guān)的屬性保持不變,與程序映像有關(guān)的屬性變l例:例:p6-2.c76.4 等待進(jìn)程完成等待進(jìn)程完成l等待子進(jìn)程的終止和獲得子進(jìn)程的出口狀態(tài)信息等待子進(jìn)程的終止和獲得子進(jìn)程的出口狀態(tài)信息lpid_t wait(int *stat_loc);lpid_t waitpid(pid_t pid, int *stat_loc, int opt

7、ions);lwait()的返回的返回lpidl阻塞阻塞l-1:無子進(jìn)程,或被信號(hào)中斷:無子進(jìn)程,或被信號(hào)中斷l(xiāng)參數(shù):參數(shù):stat_locl終止?fàn)顟B(tài):出口狀態(tài)、信號(hào)數(shù)、其他信息終止?fàn)顟B(tài):出口狀態(tài)、信號(hào)數(shù)、其他信息l相關(guān)宏相關(guān)宏 表表6-186.4 等待進(jìn)程完成等待進(jìn)程完成l例:例:p6-3.c p6-4.clwaitpid()參數(shù)參數(shù)lpid=-1: 等待任意子進(jìn)程,等價(jià)等待任意子進(jìn)程,等價(jià)wait()lpid0: 等待進(jìn)程等待進(jìn)程ID為為pid的子進(jìn)程的子進(jìn)程lpid=0:等待進(jìn)程組等待進(jìn)程組ID與調(diào)用進(jìn)程的進(jìn)程組與調(diào)用進(jìn)程的進(jìn)程組ID相同的任意子進(jìn)程相同的任意子進(jìn)程lpidnewfile

8、)l前臺(tái)進(jìn)程組、后臺(tái)進(jìn)程組(后臺(tái)命令前臺(tái)進(jìn)程組、后臺(tái)進(jìn)程組(后臺(tái)命令&)l進(jìn)程組進(jìn)程組IDPGID pid_tl進(jìn)程組組長進(jìn)程組組長l組長的組長的PID與與PGID相同相同l組長可以創(chuàng)建一個(gè)進(jìn)程組、創(chuàng)建組內(nèi)的進(jìn)程、以及終止它們組長可以創(chuàng)建一個(gè)進(jìn)程組、創(chuàng)建組內(nèi)的進(jìn)程、以及終止它們l進(jìn)程組的生命期進(jìn)程組的生命期136.7進(jìn)程組進(jìn)程組l獲取和設(shè)置進(jìn)程的進(jìn)程組獲取和設(shè)置進(jìn)程的進(jìn)程組IDlpid_t getpgrp(void);lint setpgid(pid_t pid, pid_t pgid);l操作的限制操作的限制l內(nèi)核可以對(duì)一個(gè)組中所有進(jìn)程采取一致行動(dòng)內(nèi)核可以對(duì)一個(gè)組中所有進(jìn)程采取一致行動(dòng)lCt

9、rl-c146.8會(huì)晤期會(huì)晤期l會(huì)晤期是一至多個(gè)進(jìn)程組的集合會(huì)晤期是一至多個(gè)進(jìn)程組的集合l每一個(gè)進(jìn)程屬于一個(gè)會(huì)晤期和一個(gè)進(jìn)程組每一個(gè)進(jìn)程屬于一個(gè)會(huì)晤期和一個(gè)進(jìn)程組l正常情況下,由一次注冊(cè)產(chǎn)生的所有進(jìn)程屬于正常情況下,由一次注冊(cè)產(chǎn)生的所有進(jìn)程屬于同一個(gè)會(huì)晤期。圖同一個(gè)會(huì)晤期。圖6-1l會(huì)晤期主席:創(chuàng)建會(huì)晤期的進(jìn)程會(huì)晤期主席:創(chuàng)建會(huì)晤期的進(jìn)程lpid_t setsid(void);-創(chuàng)建一個(gè)新的會(huì)晤期創(chuàng)建一個(gè)新的會(huì)晤期156.9控制終端控制終端l控制終端(注冊(cè)終端)控制終端(注冊(cè)終端)-進(jìn)程通過控制終端進(jìn)進(jìn)程通過控制終端進(jìn)行輸入、輸出和控制作業(yè)的運(yùn)行行輸入、輸出和控制作業(yè)的運(yùn)行l(wèi)控制終端與會(huì)晤期、

10、進(jìn)程組以及進(jìn)程之間有如控制終端與會(huì)晤期、進(jìn)程組以及進(jìn)程之間有如下關(guān)系:下關(guān)系:P166l/dev/ttylchar *ctermid(char *ptr);l可直接讀寫可直接讀寫/dev/tty以避免重定向以避免重定向l與終端相連的前臺(tái)進(jìn)程組的組與終端相連的前臺(tái)進(jìn)程組的組IDlpid_t tcgetpgrp(int fd);lint tcsetpgrp(int fd, pid_t pgrpid);166.10作業(yè)控制作業(yè)控制l作業(yè)控制指的是允許用戶在單個(gè)會(huì)晤期內(nèi)的多作業(yè)控制指的是允許用戶在單個(gè)會(huì)晤期內(nèi)的多個(gè)進(jìn)程組之間切換的機(jī)制個(gè)進(jìn)程組之間切換的機(jī)制l作業(yè)控制允許用戶同時(shí)控制多個(gè)進(jìn)程作業(yè)控制允許用戶同時(shí)控制多個(gè)進(jìn)程l利用作業(yè)控制,用戶可以掛起一個(gè)正在執(zhí)行的利用作業(yè)控制,用戶可以掛起一個(gè)正在執(zhí)行的作業(yè)、將作業(yè)放置在后臺(tái)執(zhí)行、恢復(fù)被掛起作作業(yè)、將作業(yè)放置在后臺(tái)執(zhí)行、恢復(fù)被掛起作業(yè)的執(zhí)行、使一個(gè)作業(yè)回到前臺(tái)、當(dāng)后臺(tái)作業(yè)業(yè)的執(zhí)行、使一個(gè)作業(yè)回到前臺(tái)、當(dāng)后臺(tái)作業(yè)企圖往終端輸入輸出時(shí)使作業(yè)暫停執(zhí)行企圖往終端輸入輸出時(shí)使作業(yè)暫停執(zhí)行l(wèi)作業(yè)控制相關(guān)命令:作業(yè)控制相關(guān)命令:&、jobs、fg、bg等等176.11思考與練習(xí)思考與練

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論