最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

linux 創(chuàng)建守護進程的相關知識

 更新時間:2014年01月30日 22:20:49   作者:  
這篇文章主要介紹了linux 創(chuàng)建守護進程的相關知識,需要的朋友可以參考下

創(chuàng)建子進程,父進程退出

  這是編寫守護進程的第一步。由于守護進程是脫離控制終端的,因此,完成第一步后就會在Shell終端里造成一程序已經運行完畢的假象。之后的所有工作都在子進程中完成,而用戶在Shell終端里則可以執(zhí)行其他命令,從而在形式上做到了與控制終端的脫離。
  在Linux中父進程先于子進程退出會造成子進程成為孤兒進程,而每當系統(tǒng)發(fā)現(xiàn)一個孤兒進程是,就會自動由1號進程(init)收養(yǎng)它,這樣,原先的子進程就會變成init進程的子進程。

在子進程中創(chuàng)建新會話

  這個步驟是創(chuàng)建守護進程中最重要的一步,雖然它的實現(xiàn)非常簡單,但它的意義卻非常重大。在這里使用的是系統(tǒng)函數(shù)setsid,在具體介紹setsid之前,首先要了解兩個概念:進程組和會話期
  進程組:是一個或多個進程的集合。進程組有進程組ID來唯一標識。除了進程號(PID)之外,進程組ID也是一個進程的必備屬性。每個進程組都有一個組長進程,其組長進程的進程號等于進程組ID。且該進程組ID不會因組長進程的退出而受到影響。

  會話周期:會話期是一個或多個進程組的集合。通常,一個會話開始與用戶登錄,終止于用戶退出,在此期間該用戶運行的所有進程都屬于這個會話期。

  接下來就可以具體介紹setsid的相關內容:

 ?。?)setsid函數(shù)作用:

  setsid函數(shù)用于創(chuàng)建一個新的會話,并擔任該會話組的組長。調用setsid有下面的3個作用:
  讓進程擺脫原會話的控制
  讓進程擺脫原進程組的控制
  讓進程擺脫原控制終端的控制

  那么,在創(chuàng)建守護進程時為什么要調用setsid函數(shù)呢?由于創(chuàng)建守護進程的第一步調用了fork函數(shù)來創(chuàng)建子進程,再將父進程退出。由于在調用了fork函數(shù)時,子進程全盤拷貝了父進程的會話期、進程組、控制終端等,雖然父進程退出了,但會話期、進程組、控制終端等并沒有改變,因此,還還不是真正意義上的獨立開來,而setsid函數(shù)能夠使進程完全獨立出來,從而擺脫其他進程的控制。

改變當前目錄為根目錄

  這一步也是必要的步驟。使用fork創(chuàng)建的子進程繼承了父進程的當前工作目錄。由于在進程運行中,當前目錄所在的文件系統(tǒng)(如“/mnt/usb”)是不能卸載的,這對以后的使用會造成諸多的麻煩(比如系統(tǒng)由于某種原因要進入單用戶模式)。因此,通常的做法是讓”/”作為守護進程的當前工作目錄,這樣就可以避免上述的問題,當然,如有特殊需要,也可以把當前工作目錄換成其他的路徑,如/tmp。改變工作目錄的常見函數(shù)式chdir。

重設文件權限掩碼

  文件權限掩碼是指屏蔽掉文件權限中的對應位。比如,有個文件權限掩碼是050,它就屏蔽了文件組擁有者的可讀與可執(zhí)行權限。由于使用fork函數(shù)新建的子進程繼承了父進程的文件權限掩碼,這就給該子進程使用文件帶來了諸多的麻煩。因此,把文件權限掩碼設置為0,可以大大增強該守護進程的靈活性。設置文件權限掩碼的函數(shù)是umask。在這里,通常的使用方法為umask(0)。

關閉文件描述符

  同文件權限碼一樣,用fork函數(shù)新建的子進程會從父進程那里繼承一些已經打開了的文件。這些被打開的文件可能永遠不會被守護進程讀寫,但它們一樣消耗系統(tǒng)資源,而且可能導致所在的文件系統(tǒng)無法卸下。

相關文章

  • Shell中關于時間和日期的函數(shù)總結

    Shell中關于時間和日期的函數(shù)總結

    本文給大家詳細介紹了shell下關于時間和日期的函數(shù)總結,本文給大家介紹的非常詳細,具有參考借鑒價值,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-05-05
  • 使用Systemctl列出Linux中所有服務的操作步驟

    使用Systemctl列出Linux中所有服務的操作步驟

    在 Linux 系統(tǒng)中,Systemctl 是一個強大的工具,用于管理系統(tǒng)的服務和守護進程,它可以讓用戶輕松地啟動、停止、重啟以及管理各種系統(tǒng)服務,本文將詳細介紹如何使用 Systemctl 來列出 Linux 中的所有服務,需要的朋友可以參考下
    2024-05-05
  • 利用Linux中的crontab實現(xiàn)分布式項目定時任務功能

    利用Linux中的crontab實現(xiàn)分布式項目定時任務功能

    crond是Linux用來定期執(zhí)行程序的命令.這篇文章主要介紹了利用Linux中的crontab實現(xiàn)分布式項目定時任務,需要的朋友可以參考下
    2018-01-01
  • 使用fdisk命令管理磁盤分區(qū)詳解

    使用fdisk命令管理磁盤分區(qū)詳解

    這篇文章主要為大家介紹了使用fdisk命令管理磁盤分區(qū)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • bash批量修改文件名稱的方法小結(增加,去除,修改后綴)

    bash批量修改文件名稱的方法小結(增加,去除,修改后綴)

    bash批量修改文件名稱的方法總結,包括為文件增加后綴、修改文件名后綴、去除文件名后綴、修改文件名前綴,有需要的朋友可以參考下
    2013-02-02
  • awk中讓人郁悶的system()函數(shù)

    awk中讓人郁悶的system()函數(shù)

    system()的結果是直接返回給shell顯示了,然后再由awk繼續(xù)執(zhí)行后面的程序,這種情況下,if()里留下的其實是system()的執(zhí)行狀態(tài)【即0或1】”0”~/^[2 3]/,當然就一直執(zhí)行else了
    2013-03-03
  • Linux shell實現(xiàn)每天定時備份mysql數(shù)據(jù)庫

    Linux shell實現(xiàn)每天定時備份mysql數(shù)據(jù)庫

    這篇文章主要介紹了Linux shell實現(xiàn)每天定時備份mysql數(shù)據(jù)庫的代碼,分享給大家,希望大家能夠喜歡。
    2015-03-03
  • shell腳本源碼安裝nginx的詳細過程

    shell腳本源碼安裝nginx的詳細過程

    這篇文章主要介紹了shell腳本源碼安裝nginx,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • 找出Linux中所有真實用戶的命令詳解

    找出Linux中所有真實用戶的命令詳解

    接觸過 Linux 的小伙伴們都知道在 Linux (或者說類 Unix)中,有三種類型的用戶,超級用戶,系統(tǒng)用戶和普通用戶,那么如何快速找出 Linux 中的真實用戶呢,文中給大家介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • Linux下自動刪除過期備份和自動異地備份的腳本

    Linux下自動刪除過期備份和自動異地備份的腳本

    這篇文章主要介紹了Linux下自動刪除過期備份和自動異地備份,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09

最新評論

洪江市| 江山市| 万全县| 新蔡县| 浦城县| 崇文区| 通山县| 舟山市| 含山县| 高尔夫| 沙田区| 安义县| 安龙县| 河津市| 前郭尔| 德清县| 茂名市| 新建县| 邵武市| 乌审旗| 泉州市| 含山县| 驻马店市| 台南县| 大同市| 辉县市| 赣榆县| 会泽县| 武陟县| 铁力市| 泰顺县| 福泉市| 江源县| 凌云县| 斗六市| 云南省| 榆林市| 汝阳县| 镇沅| 高要市| 许昌县|