日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2进程之间的关系:进程组,会话,守护进程

發布時間:2024/9/27 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2进程之间的关系:进程组,会话,守护进程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1進程組

一個或多個進程的集合,進程組ID是一個正整數。用來獲得當前進程組ID的函數。

pid_t getpgid(pid_t pid)

pid_t getpgrp(void)

獲得父子進程進程組

運行結果:

組長進程標識:其進程組ID=其進程ID

組長進程可以創建一個進程組,創建該進程組中的進程,然后終止,只要進程組中有一個進程存在,進程組就存在,與組長進程是否終止無關。

進程組生存期:進程組創建到最后一個進程離開(終止或轉移到另一個進程組)

一個進程可以為自己或子進程設置進程組ID

int setpgid(pid_tpid, pid_t pgid);

???????如改變子進程為新的組,應在fork后,exec前使用

root進程只能改變自己創建的子進程,或有權限操作的進程

????setpgid()加入一個現有的進程組或創建一個新進程組,如改變父子進程為新的組

運行結果:

2會話

pid_t setsid(void);

A:調用進程不能是進程組組長,該進程變成新會話首進程(sessionheader)

B:該進程成為一個新進程組的組長進程。

C:需有root權限(ubuntu不需要)

D:新會話丟棄原有的控制終端,該會話沒有控制終端

E:該調用進程是組長進程,則出錯返回

F:建立新會話時,先調用fork,父進程終止,子進程調用。

?

pid_t getsid(pid_t pid);

?

pid0表示察看當前進程sessionID

ps ajx命令查看系統中的進程。參數a表示不僅列當前用戶的進程,也列出所有其他用

戶的進程,參數x表示不僅列有控制終端的進程,也列出所有無控制終端的進程,參數j表示列出與作業控制相關的信息。

組長進程不能成為新會話首進程,新會話首進程必定會成為組長進程。

運行:

另開一個終端。最開始輸入ps ajx,運行結果如下:

稍等片刻后再次輸入ps ajx,運行結果如下:

休眠20秒后此進程自動消失。

3守護進程

A概念

Daemon(精靈)進程,是Linux中的后臺服務進程,生存期較長的進程,通常獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。

B模型

守護進程編程步驟

B1創建子進程,父進程退出

??????所有工作在子進程中進行

  ??形式上脫離了控制終端

B2在子進程中創建新會話

??setsid()函數

 使子進程完全獨立出來,脫離控制

B3改變當前目錄為根目錄

??chdir()函數

 防止占用可卸載的文件系統

 也可以換成其它路徑

B4重設文件權限掩碼

??umask()函數

 防止繼承的文件創建屏蔽字拒絕某些權限

 增加守護進程靈活性

???B5關閉文件描述符

??????繼承的打開文件不會用到,浪費系統資源,無法卸載

???B6開始執行守護進程核心工作

???B7守護進程退出處理

案例說明:

運行這個程序,它變成一個守護進程,不再和當前終端關聯。用ps命令看不到,必須運行帶x參數的ps命令才能看到。另外還可以看到,用戶關閉終端窗口或注銷也不會影響守護進程的運行。

總結

以上是生活随笔為你收集整理的2进程之间的关系:进程组,会话,守护进程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。