(1)進程組(作業):代表一個或多個進程的集合。
? ? ? ? ? 1)父進程創建子進程時,默認子進程與父進程屬于同一進程組,進程組id==第一個進程id(組長id,父進程id)。
? ? ? ? ? 2)使用kill -SIGKILL -進程組id(負數)? 將整個進程組殺死。
? ? ? ? ? 3)只有進程組中還有進程存在,進程組就一直存在,與組長進程是否終止無關。
? ? ? ? ? 4)進程組生存周期為進程組中最后一個進程存活時間。
? ? ? ? ? 5)一個進程可以為自己或子進程設置進程組id(setpgid)
(2)進程組操作函數
? ? ? ? ?1)獲取當前進程的進程組id:getpgrp
? ? ? ? ? ? ? ? ? ? ?pid_t? getpgrp(void);? ? ? ? ? ?//返回調用者的進程組ID
? ? ? ? ?2)獲取指定進程的進程組id:getpgid
? ? ? ? ? ? ? ? ? ? pid_t? getpgid(pid_t pid);? ?//成功返回0,失敗返回-1
? ? ? ? ? ? ? ? ? ? ? ? ?pid=0時,該函數效果和getpgrp作用相同
? ? ? ? 3)改變進程組默認所屬進程組:setpgid(通常用來加入一個現有的進程組或創建一個新進程組)
? ? ? ? ? ? ? ? ? ?int? setpgid(pid_t pid ,pid_t pgid);? 成功:0 失敗:-1
? ? ? ? ? ? ? ? ? ? ? 功能:將pid加入到pgid中
? ? ? ? ? ? ? 注意事項:1>如果想要把子進程設置為新的組,應把setpgid放在fork函數之后,exec函數(執行完后不返回了)之前。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2>改變進程組只有在符合自己權限的情況下才能改變。
(3)會話:一個或多個進程組的集合
? ? ? ? ? 1)創建會話
? ? ? ? ? ? ? ? ? 1>創建會話的進程不能使進程組的組長,如果是組長進程,則會出錯
? ? ? ? ? ? ? ? ? 2>創建會話的進程會成為新進程組的組長進程
? ? ? ? ? ? ? ? ? 3>一般linux需要root權限(ubuntu不需要)
? ? ? ? ? ? ? ? ? 4>新會話會舍棄原有的控制終端,該會話沒有控制終端
? ? ? ? ? ? ? ? ? 5>建立新會話的順序,先調用fork,父進程終止,子進程調用setsid函數創建會話,稱為進程組組長和會話的會長。
? ? ? ? ? 2)會話操作函數
? ? ? ? ? ? ? ? 1>獲取進程組所屬會話id:getsid
? ? ? ? ? ? ? ? ? ? ? pid_t getsid(pid_t pid)? 成功:返回調用進程的會話id? 失敗:-1
? ? ? ? ? ? ? ? ? ? ? ? ? ?pid=0? ? 查看當前進程的會話id
? ? ? ? ? ? ? ? ? ?ps ajx? ?參數j代表與控制作業相關的信息,參數a代表所有用戶的進程,參數x代表所有控制終端和無控制終端的進程。
? ? ? ? ? ? ? ?2>創建一個新會話,并將自己的id設置為進程組id和新會話id:setsid
? ? ? ? ? ? ? ? ? ? pid_t setsid(void)??成功:返回調用進程的會話id? 失敗:-1
? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ??3)會話的作用:創建守護(daemon精靈)進程
? ? ? ? ? ? ? ?1>守護進程的定義:linux后臺服務進程,通常獨立與控制終端并且周期性地執行某種任務或等待處理某些發生的事情,一般采用以d結尾的名字。
? ? ? ? ? ? ? ?2>守護進程的特點:沒有控制終端,不能直接和用戶交互,不受用戶登錄、注銷的影響,一直運行著。
? ? ? ? ? ? ? ?3>創建守護進程的流程:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1》創建子進程,父進程退出,所有工作都在子進程中進行形式上體力子控制終端。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2》在子進程中創建新會話(setsid函數),使子進程完全獨立出來,脫離控制。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3》改變當前目錄為根目錄(chdir函數),防止占用可卸載的文件系統(如掛載在/mnt下的U盤中的程序,就屬于可卸載)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4》重設文件權限掩碼(umask函數),防止繼承的文件創建某些屏蔽字拒絕某些權限,增加守護進程的靈活性。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5》關閉文件描述符,繼續的打開文件(0/1/2)不會用到,浪費系統資源,無法卸載,可以重定向到/dev/null文件下。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6》開始執行守護進程核心工作,守護進程退出處理程序模型。
? ? ? ? ? 4>創建守護進程例子
? ? ? ? ? ? ? ? ? ??