亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Unix > 正文

《Unix環(huán)境高級(jí)編程》讀書筆記 第8章-進(jìn)程控制

2024-06-28 13:24:24
字體:
供稿:網(wǎng)友
《Unix環(huán)境高級(jí)編程》讀書筆記 第8章-進(jìn)程控制 1. 進(jìn)程標(biāo)識(shí)
  • 進(jìn)程ID標(biāo)識(shí)符是唯一、可復(fù)用的。大多數(shù)Unix系統(tǒng)實(shí)現(xiàn)延遲復(fù)用算法,使得賦予新建進(jìn)程的ID不同于最近終止所使用的ID
  • ID為0的進(jìn)程通常是調(diào)度進(jìn)程,也常被稱為交換進(jìn)程。它是內(nèi)核的一部分,是系統(tǒng)進(jìn)程。
  • ID為1的進(jìn)程通常是init進(jìn)程,在自舉過程結(jié)束時(shí)由內(nèi)核調(diào)用。該進(jìn)程負(fù)責(zé)在內(nèi)核自舉后啟動(dòng)一個(gè)Unix系統(tǒng),它決不會(huì)終止,是一個(gè)普通的用戶進(jìn)程,但以超級(jí)用戶特權(quán)運(yùn)行。
  • ID為2的進(jìn)程是頁守護(hù)進(jìn)程,負(fù)責(zé)支持虛擬存儲(chǔ)器系統(tǒng)的分頁操作。
#include <unistd.h>pid_t getpid(void); Returns: PRocess ID of calling processpid_t getppid(void); Returns: parent process ID of calling processuid_t getuid(void); Returns: real user ID of calling processuid_t geteuid(void); Returns: effective user ID of calling processgid_t getgid(void); Returns: real group ID of calling processgid_t getegid(void); Returns: effective group ID of calling process
  • 注意:這些函數(shù)都沒有出錯(cuò)返回。
2. 函數(shù)fork
  • fork函數(shù)被調(diào)用一次,返回兩次。子進(jìn)程中返回值是0,父進(jìn)程中返回值是子進(jìn)程的pid
  • 子進(jìn)程是父進(jìn)程的副本,子進(jìn)程獲得父進(jìn)程的數(shù)據(jù)空間、堆和棧的副本。注意,在是子進(jìn)程擁有的副本。父子進(jìn)程并不共享這些存儲(chǔ)空間部分。父子進(jìn)程共享正文段。
  • 由于在fork之后經(jīng)常跟隨著exec,所以現(xiàn)在的很多實(shí)現(xiàn)并不執(zhí)行一個(gè)父進(jìn)程數(shù)據(jù)段、堆和棧的完全副本。作為替代,使用了寫時(shí)復(fù)制技術(shù)。
  • 4種平臺(tái)都支持的變體:vfork;linux的變體:clone系統(tǒng)調(diào)用,允許調(diào)用者控制哪些部分由父子進(jìn)程共享。
  • fork之后是父進(jìn)程先執(zhí)行還是子進(jìn)程先執(zhí)行是不確定的
  • 父進(jìn)程中的所有打開文件描述符都被復(fù)制到子進(jìn)程中,父子進(jìn)程為每個(gè)相同的打開描述符共享一個(gè)文件表項(xiàng),故共享同一文件偏移量。如果父子進(jìn)程寫同一描述符執(zhí)行的文件,又沒有任何形式的同步,那么它們的輸出就會(huì)混合。
  • 在fork之后處理文件描述符有以下兩種常見的情況:
    1. 父進(jìn)程等待子進(jìn)程完成。這種情況下,父進(jìn)程無需對(duì)其描述符做任何處理。
    2. 父進(jìn)程和子進(jìn)程各自執(zhí)行不同的程序段。這種情況下,fork之后,父子進(jìn)程各自它們不需要使用的文件描述符。
  • strlen和sizeof的區(qū)別:前者不包括null字節(jié),一次函數(shù)調(diào)用;后者包括null字節(jié),編譯時(shí)計(jì)算

  • 除了文件描述符之外,父進(jìn)程的很多其他屬性也由子進(jìn)程繼承,包括:

    1. 實(shí)際用戶ID、實(shí)際組ID、有效用戶ID、有效組ID
    2. 附屬組ID
    3. 進(jìn)程組ID
    4. 會(huì)話ID
    5. 控制終端
    6. SUID和SGID標(biāo)志(stat結(jié)構(gòu)的st_mode成員)
    7. 當(dāng)前工作目錄
    8. 根目錄
    9. 文件模式創(chuàng)建屏蔽字umask
    10. 信號(hào)屏蔽和處理
    11. 對(duì)任一打開文件描述符的執(zhí)行時(shí)關(guān)閉(close-on-exec)標(biāo)志
    12. 環(huán)境
    13. 連接的共享存儲(chǔ)段
    14. 存儲(chǔ)映像
    15. 資源限制
    16. 是否繼承nice值由具體實(shí)現(xiàn)自行決定
  • 父進(jìn)程和子進(jìn)程之間的區(qū)別具體如下:

    1. fork的返回值不同
    2. pid不同
    3. 這兩個(gè)進(jìn)程的父進(jìn)程不同
    4. 子進(jìn)程的tms_utime、tms_stime、tms_cutime和tms_ustime的值設(shè)置為0
    5. 子進(jìn)程不繼承父進(jìn)程設(shè)置的文件鎖
    6. 子進(jìn)程的未處理鬧鐘被清除
    7. 子進(jìn)程的未處理信號(hào)集設(shè)置為空集
  • fork失敗的兩個(gè)主要原因:

    1. 系統(tǒng)中已經(jīng)有了太多的進(jìn)程
    2. 該實(shí)際用戶ID的進(jìn)程總數(shù)超過了系統(tǒng)限制
  • fork有以下兩種用法:

    1. 一個(gè)父進(jìn)程希望復(fù)制自己,使父進(jìn)程和子進(jìn)程同時(shí)執(zhí)行不同的代碼段。這在網(wǎng)絡(luò)服務(wù)器中是常見的。
    2. 一個(gè)進(jìn)程要執(zhí)行一個(gè)不同的程序。這對(duì)shell是常見的情況。某些系統(tǒng)將fork+exec組合成一個(gè)操作spawn
3. 函數(shù)vfork
  • vfork函數(shù)的調(diào)用序列和返回值與fork相同,但兩者的語義不同:
    1. vfork函數(shù)用于創(chuàng)建一個(gè)新進(jìn)程,而該新進(jìn)程的目的是exec一個(gè)新程序,故不將父進(jìn)程的地址空間完全復(fù)制到子進(jìn)程中,因?yàn)樽舆M(jìn)程會(huì)立即調(diào)用exec(或exit),于是也就不會(huì)引用該地址空間。不管在子進(jìn)程調(diào)用exec或exit之前,它在父進(jìn)程的空間中運(yùn)行。
    2. 另一個(gè)區(qū)別是vfork保證子進(jìn)程先運(yùn)行,在它調(diào)用exec或exit之后父進(jìn)程才可能被調(diào)度運(yùn)行。故如果在調(diào)用這兩個(gè)函數(shù)之前子進(jìn)程依賴于父進(jìn)程的進(jìn)一步動(dòng)作,則會(huì)導(dǎo)致死鎖。
4. 函數(shù)exit
  • 5種正常終止方式:
    1. 從main中執(zhí)行return,等效于調(diào)用exit
    2. 調(diào)用exit函數(shù),調(diào)用各終止處理程序,關(guān)閉標(biāo)準(zhǔn)I/O流,最后調(diào)用_exit函數(shù)
    3. 調(diào)用_exit或_Exit
    4. 進(jìn)程的最后一個(gè)線程在其啟動(dòng)例程執(zhí)行return語句,該進(jìn)程以終止?fàn)顟B(tài)0返回
    5. 進(jìn)程的最后一個(gè)線程調(diào)用pthread_exit,進(jìn)程終止?fàn)顟B(tài)總是0
  • 3種異常終止方式:
    1. 調(diào)用abort,它產(chǎn)生SIGABRT信號(hào)
    2. 當(dāng)進(jìn)程接收到某些信號(hào)時(shí),信號(hào)可由進(jìn)程自身(如調(diào)用abort函數(shù))、其他進(jìn)程或內(nèi)核產(chǎn)生
    3. 最后一個(gè)線程對(duì)“取消”請(qǐng)求做出響應(yīng)
  • 不管進(jìn)程如何終止,最后都會(huì)執(zhí)行內(nèi)核中的同一段代碼。這段代碼為相應(yīng)的進(jìn)程關(guān)閉所有打開描述符,釋放它所使用的存儲(chǔ)器等。
  • 注意:“退出狀態(tài)”(3個(gè)exit函數(shù)的參數(shù)或main的返回值)區(qū)別于“終止?fàn)顟B(tài)”。在最后調(diào)用_exit時(shí),內(nèi)核將退出狀態(tài)轉(zhuǎn)換為終止?fàn)顟B(tài)。

  • 如果父進(jìn)程在子進(jìn)程之前終止,則稱子進(jìn)程為孤兒進(jìn)程。子進(jìn)程 ppid變?yōu)?,稱這些進(jìn)程由init進(jìn)程收養(yǎng)。一個(gè)init進(jìn)程收養(yǎng)的進(jìn)程終止時(shí),init會(huì)調(diào)用一個(gè)wait函數(shù)取得其終止?fàn)顟B(tài),防止它成為僵尸進(jìn)程。

  • 如果子進(jìn)程在父進(jìn)程之前終止,內(nèi)核為每個(gè)終止子進(jìn)程保存了一定量的信息,至少包括pid、該進(jìn)程的終止?fàn)顟B(tài)以及該進(jìn)程使用的CPU時(shí)間總量。內(nèi)核可以釋放終止進(jìn)程所使用的所有存儲(chǔ)區(qū),關(guān)閉其所有打開文件。在Unix術(shù)語中,一個(gè)已經(jīng)終止、但其父進(jìn)程尚未對(duì)其進(jìn)行善后處理(獲取終止子進(jìn)程的有關(guān)信息、釋放它仍占用的資源)的進(jìn)程被稱為僵尸進(jìn)程zombie/defunct。
5. 函數(shù)wait、waitpid
  • 當(dāng)一個(gè)進(jìn)程正?;虍惓=K止時(shí),內(nèi)核就向其父進(jìn)程發(fā)送SIGCHLD信號(hào)。子進(jìn)程終止是異步事件。
#include <sys/wait.h>pid_t wait(int *statloc);pid_t waitpid(pid_t pid, int *statloc, int options); Both return: process ID if OK, 0 (see later), or −1 on error
  • 調(diào)用wait或waitpid的進(jìn)程可能:
    1. 如果其所有子進(jìn)程都還在運(yùn)行,則阻塞
    2. 如果一個(gè)子進(jìn)程終止,正等待其父進(jìn)程獲取其終止?fàn)顟B(tài),則取得該子進(jìn)程的終止?fàn)顟B(tài)立即返回
    3. 如果它沒有任何子進(jìn)程,則立即出錯(cuò)返回
  • 如果進(jìn)程由于收到SIGCHLD信號(hào)而調(diào)用wait,我們期望wait會(huì)立即返回。
  • wait與waitpid的區(qū)別
    1. waitpid有一選項(xiàng),可使調(diào)用者不阻塞
    2. waitpid可以控制它所等待的進(jìn)程
  • 若statloc不是NULL,則終止進(jìn)程的終止?fàn)顟B(tài)就存放在它所指向的單元內(nèi)。該整型狀態(tài)字由實(shí)現(xiàn)定義,其中某些位表示退出狀態(tài)(正常返回),其他位則指示信號(hào)編號(hào)(異常返回),有一位指示是否產(chǎn)生了core文件。

  • waitpid函數(shù)中的pid參數(shù)的解釋:

    pid == -1,等待任一子進(jìn)程,等價(jià)于wait函數(shù)pid > 0,等待pid等于該值的子進(jìn)程pid == 0,等待組ID等于調(diào)用進(jìn)程組ID的任一子進(jìn)程pid < 0,等待組ID等于pid絕對(duì)值的任一子進(jìn)程

  • waitpid函數(shù)中的options參數(shù):WNOHANG(不阻塞)、WCONTINUED、WUNTRACED

  • 如果一個(gè)進(jìn)程fork一個(gè)子進(jìn)程,但不要它等待子進(jìn)程終止,也不希望子進(jìn)程處于僵尸狀態(tài)直到父進(jìn)程終止,實(shí)現(xiàn)這一要求的訣竅是調(diào)用fork兩次。

#include "apue.h"#include <sys/wait.h>int main(void){ pid_t pid; if ((pid = fork()) < 0) {        err_sys("fork error"); } else if (pid == 0) { /* first child */ if ((pid = fork()) < 0)            err_sys("fork error"); else if (pid > 0)            exit(0); /* parent from second fork == first child *//** We’re the second child; our parent becomes init as soon* as our real parent calls exit() in the statement above.* Here’s where we’d continue executing, knowing that when* we’re done, init will reap our status.*/    sleep(2);    printf("second child, parent pid = %ld/n", (long)getppid());    exit(0);

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
91九色国产社区在线观看| 一级性生活视频| 欧美大片久久久| 99综合电影在线视频| 非洲黑人最猛性xxxx交| 色婷婷精品大在线视频| 在线观看免费网站| 久久精品一区二区三区不卡免费视频| 欧美日韩国产电影| 亚洲精品欧美一区二区三区| 国产成人亚洲精品无码h在线| 欧美与亚洲与日本直播| 久久精品亚洲一区二区三区浴池| 性欧美性free| 明星乱亚洲合成图.com| 亚洲精品久久一区二区三区777| 日本成片免费高清| xxx在线免费观看| 97成人资源站| 免费在线看黄色片| 成人午夜一级二级三级| 丰满人妻妇伦又伦精品国产| 欧美精品1区| 99国产精品99久久久久久| 欧美激情aaa| 亚洲精品成人区在线观看| 国产精品一区二区三区免费视频| 欧美一区二区高清在线观看| 痴汉一区二区三区| 中文字幕一二三四| 最近2019好看的中文字幕免费| 亚洲成a人片77777老司机| 国产一区私人高清影院| 69xxx在线| 欧美性猛交丰臀xxxxx网站| 亚洲一区观看| 亚洲成人黄色网| 欧美日韩无遮挡| 欧美综合第一页| 日韩在线观看免费全集电视剧网站| 国产欧美一区二区三区鸳鸯浴| 无套内谢大学处破女www小说| 亚洲v天堂v手机在线| 亚洲欧美强伦一区二区| 成人免费无码大片a毛片| 亚洲日本国产| 国产精选在线| 导航福利在线| 天天躁日日躁aaaxxⅹ| 日日噜噜噜噜久久久精品毛片| 欧美日韩xxxxx| 一本色道久久99精品综合| 国产主播av在线| 久久久精品网站| 欧美美女在线直播| 亚洲va韩国va欧美va精四季| 欧美自拍资源在线| 国精产品一区一区三区mba视频| 人妻无码一区二区三区四区| 国产国产人免费人成免费视频| 你懂的视频欧美| 日韩乱码一区二区三区| 免费成人在线网站| 在线观看国产高清视频| 亚洲精品黄网在线观看| 欧美怡春院一区二区三区| 123区在线| 欧美一级久久| 欧美一级高清片| 成人18免费| 天天爽夜夜爽夜夜爽精品视频| 精品国产aaa| 久久精品99久久久久久| 欧美日韩一级片网站| 欧美成人精品不卡视频在线观看| 岳张嘴把我的精子吞下去| 视频国产精品| 91情侣偷在线精品国产| 800av在线免费观看| 亚洲精品第一国产综合野| 久久人体av| 成人观看网址| 欧美一二三视频| 性欧美1819sex性高清| 成人性生交大合| 日本精品久久久久久久久久| 中文字幕日韩欧美精品在线观看| 久久精品视频日本| 欧美人与禽zozzo禽性配| 国产精品久久久久久久天堂第1集| 青青草免费观看免费视频在线| 色狠狠av一区二区三区香蕉蜜桃| 99re在线视频免费观看| 国产一区二区不卡老阿姨| 视频一区二区三区在线看免费看| www.爱久久| 99久久精品99国产精品| av在线免费观看网址| 成人香蕉社区| 91精品国产综合久久久久久漫画| 日韩一区二区在线看| 91网站黄www| 国产精品亚洲一区| 日本精品久久| 激情小说激情视频| 性xxxx丰满孕妇xxxx另类| 久久久久青草大香线综合精品| 国产精品300页| jizz在线视频| 丁香天五香天堂综合| 国产乱国产乱老熟300| 国外视频精品毛片| 国产探花一区在线观看| 少妇高潮毛片色欲ava片| 欧美日韩国产首页| 国产嫩bbwbbw高潮| 欧美一区二区三区公司| 国产伦精品一区二区三区四区| 福利一区二区| 国产又粗又猛又爽又黄视频| 亚洲第一导航| 国产精品福利小视频| 亚洲嫩草精品久久| 亚洲一区二区三区四区不卡| 成人免费观看49www在线观看| 偷偷要 色偷偷| 美女视频一区二区三区在线| 亚洲精品中文字幕乱码| 亚洲加勒比久久88色综合| 免费羞羞视频网站| 国产精品成人a在线观看| 国产精品入口日韩视频大尺度| 国产成人免费视频一区| 中文字幕一区二区三区5566| 久久久久久久久久久一区| 久久久99久久精品欧美| 成人性生交大片免费| 超碰97在线看| 国产精品 欧美 日韩| 欧美日韩成人在线播放| 在线视频亚洲| 国产日韩一区二区三区在线| www深夜成人a√在线| 亚洲免费网站在线观看| 亚洲一区二区三区高清| 亚洲综合免费观看高清在线观看| 亚洲a一区二区三区| 狠狠色狠狠色综合婷婷tag| 日韩av毛片网| 99re91这里只有精品| 日日摸夜夜添夜夜添国产精品| 国产破处视频在线观看| 成人综合婷婷国产精品久久蜜臀| 成人乱色短篇合集| 超碰91在线播放| 日韩在线观看免费全| 国产精品嫩草99av在线| 捆绑紧缚一区二区三区视频| 亚洲精品乱码久久久久| 欧美日韩午夜影院| 两性午夜免费视频| 亚洲成av人片| 亚洲欧美综合另类在线卡通| 精品国产免费无码久久久| 免费黄色在线看| 麻豆tv在线观看| 国产福利在线免费观看| 色综合天天爱| 俄罗斯黄色录像| 亚洲一级片网站| 精品无人乱码一区二区三区的优势| 天堂久久一区二区三区| 一区二区xxx| 99re在线视频上| 日韩av黄色网址| 无码人妻精品一区二区三区99不卡| 极品久久久久久久| 亚洲综合社区网| 欧美综合欧美视频| 欧美女同在线观看| 蜜臀av在线播放一区二区三区| 欧美午夜片在线看| 久久综合综合久久| 亚洲精品久久久久久| 黄色一区二区在线| 99热这里只有精品在线播放| 亚洲欧美亚洲| 欧洲大片精品免费永久看nba| 日韩有码在线视频| 无码精品人妻一区二区| 热99re久久精品精品免费| 亚洲一区二区三区视频在线| 亚洲天堂一区二区三区| 久久婷婷国产综合尤物精品| 欧美连裤袜在线视频| 成人久久18免费网站麻豆| 欧美一三区三区四区免费在线看| 亚洲男同gay网站| 久久躁狠狠躁夜夜爽| 国产精品激情偷乱一区二区∴| 成人免费91| 国产91av在线播放| 黄色在线免费观看大全| 久久精品福利视频| 亚洲一区二区自拍偷拍| 综合激情网五月| 成人一区二区三区仙踪林| 超碰在线观看av| www.成人av.com| 欧美艳星kaydenkross| 日本在线电影一区二区三区| 中国毛片直接看| 国内拍拍自拍视频在线观看| 日本精品一区在线观看| 人妻少妇一区二区三区| 国产精品人人爱一区二区白浆| 国产99久久精品一区二区300| 亚洲 欧美 综合 另类 中字| xxxwww在线观看| 日本一区二区三区视频在线| 亚洲人成影视在线观看| 精品无码人妻一区二区三区品| 国产一区二区视频在线观看免费| www日本在线| 国产精品伦一区二区三区| 亚洲欧洲av一区二区三区久久| 日本成人三级电影网站| 五月天欧美精品| 波多野结衣在线观看| 国产精品青草久久久久福利99| 国产91精品视频在线观看| 日韩欧美一区中文| 欧美剧情电影在线观看完整版免费励志电影| 国产伦精品一区二区三区千人斩| 日韩免费电影网站| 国产精品伦一区| 欧美精品一区二区三区国产精品| 午夜久久中文| 欧美老女人性开放| 国产一级久久久久毛片精品| 亚洲黄色在线看| 黄色在线成人| 91玉足脚交白嫩脚丫| 亚洲精品一区二区三区精华液| 国产精品系列在线播放| 免费一级欧美在线观看视频| 九九视频九九热| 欧美一区二区三区免费观看| 精品国产乱码久久久久酒店| eeuss鲁一区二区三区| 亚洲一区二区三区xxx视频| wwwav在线播放| 久久久成人精品一区二区三区| 美女又爽又黄免费| 午夜男人天堂| 在线观看免费黄色网址| 26uuu国产电影一区二区| 国产精品久久久久久久久久久久久久久久| 欧美国产大片| 国产精品magnet| 久久xxxx精品视频| 国产精品视频免费一区二区三区| 中韩乱幕日产无线码一区| 在线观看男女av免费网址| 亚洲大片免费看| 久久久精品久久久| 国产深夜福利| 国产一级片毛片| 亚洲成人av高清| 亚洲另类图片另类电影| 国产精品一区二区av白丝下载| 国语对白精品一区二区| 丰满人妻一区二区三区免费视频棣| 亚洲欧美偷拍卡通变态| 福利精品视频在线| 手机av免费在线| 国产91对白在线播放| 尤物视频最新网址| 国产日韩欧美精品电影三级在线| 国产黄在线免费观看| 一区二区三区在线观看免费| 久久天天躁狠狠躁夜夜av| 少妇搡bbbb搡bbb搡打电话| 天堂va在线| 成人欧美精品久久久久影院| 久久亚洲精品大全| 97超碰免费在线观看| 天堂av.com| 久久久久久久久综合影视网| 久久免费福利视频| 亚洲福利视频一区二区| 久久91亚洲| 国自产精品手机在线观看视频| 欧美涩涩网站| 在线观看免费成人av| 日本综合精品一区| 比比资源-先锋影音资源站| 亚洲最大成人网站| 亚洲免费小视频| 亚洲成人第一网站| 狂野欧美xxxx韩国少妇| 韩国欧美一区二区| 秋霞影院一区二区三区| 亚洲AV无码精品色毛片浪潮| 亚洲国产专区| 91精品综合视频| 国精产品一区一区三区四川| 日本一级大毛片a一| 免费在线观看av片| 亚洲永久免费网站| 一区二区电影在线观看| 亚洲激情中文在线| 青青青在线视频播放| 精品一区二区三区日本| 国产91亚洲精品| 国产精品资源网站| 免费在线观看一级片| 青青草一区二区| 日本免费在线观看| 伊人久久大香伊蕉在人线观看热v| 美女在线一区| 在线观看国产精品91| 里番精品3d一二三区| 欧美精品日韩一区| 9191在线观看| www国产亚洲精品久久麻豆| 成人亚洲免费视频| 欧美国产精品专区|