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

詳解Linux中的守護(hù)進(jìn)程

 更新時(shí)間:2017年06月28日 10:09:55   投稿:lqh  
這篇文章主要介紹了詳解Linux中的守護(hù)進(jìn)程的相關(guān)資料,需要的朋友可以參考下

一、什么是守護(hù)進(jìn)程

Linux系統(tǒng)啟動(dòng)時(shí)會(huì)啟動(dòng)很多系統(tǒng)服務(wù)進(jìn)程,這些系統(tǒng)服 務(wù)進(jìn)程沒有控制終端,不能直接和用戶交互。其它進(jìn)程都是在用戶登錄或運(yùn)行程序時(shí)創(chuàng)建,在運(yùn)⾏結(jié)束或⽤戶注銷時(shí)終止,但系統(tǒng)服務(wù)進(jìn)程不受用戶登錄注銷的影響,它們⼀直在運(yùn)行著。這種進(jìn)程叫守護(hù)進(jìn)程。

守護(hù)進(jìn)程也被稱為精靈進(jìn)程,是運(yùn)行在后臺(tái)的一種特殊進(jìn)程,它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。
查看方式

ps axj命令:查看系統(tǒng)中的進(jìn)程。

參數(shù)a表示不僅列當(dāng)前⽤戶的進(jìn)程,也列出所有其他用戶的進(jìn)程;

參數(shù)x表示不僅列有控制終端的進(jìn)程,也列出所有⽆控制終端的進(jìn)程;

參數(shù)j表示列出與作業(yè)控制相關(guān)的信息;

榪欓噷鍐欏浘鐗囨弿榪? title=

 二、守護(hù)進(jìn)程的調(diào)用

創(chuàng)建守護(hù)進(jìn)程最關(guān)鍵的⼀步是調(diào)⽤setsid函數(shù)創(chuàng)建⼀個(gè)新的會(huì)話,并成為會(huì)話leader。

該函數(shù)調(diào)用成功時(shí)返回新創(chuàng)建的Session的id(其實(shí)也就是當(dāng)前進(jìn)程的id),出錯(cuò)返回-1。注意,調(diào)用這個(gè)函數(shù)之前,當(dāng)前進(jìn)程不允許是進(jìn)程組的Leader,否則該函數(shù)返回-1。要保證當(dāng)前進(jìn)程不是進(jìn) 程組的Leader也很容易,只要先fork再調(diào)⽤setsid就行了。fork創(chuàng)建的子進(jìn)程和⽗進(jìn)程在同⼀個(gè)進(jìn)程組中,進(jìn)程組的Leader必然是該組的第⼀個(gè)進(jìn)程,所以子進(jìn)程不可能是該組的第⼀進(jìn)程,在子進(jìn)程中調(diào)用setsid就不會(huì)有問題了。

成功創(chuàng)建并調(diào)用一個(gè)守護(hù)進(jìn)程的標(biāo)志是:

1、成功新建一個(gè)會(huì)話,當(dāng)前進(jìn)程成為該會(huì)話的leader,該會(huì)話的ID為當(dāng)前進(jìn)程的ID;

2、成功新建一個(gè)新的進(jìn)程組,并且成為該組的組長,該進(jìn)程組的組id即為當(dāng)前進(jìn)程的id;

3、如果當(dāng)前進(jìn)程有一個(gè)控制終端,那么當(dāng)前進(jìn)程失去這個(gè)控制終端,成為一個(gè)無控制終端的進(jìn)程;所謂失去控制終端是指,原來的控制終端仍然是打開的,仍然可以讀寫,但只是⼀個(gè)普通的打開⽂件⽽不是控制終端了。

三、守護(hù)進(jìn)程的創(chuàng)建

1、使用umask將文件模式創(chuàng)建屏蔽字設(shè)置為0;

2、調(diào)用fork(),父進(jìn)程退出(exit)。 (如果該守護(hù)進(jìn)程作為一條簡單的shell命令啟動(dòng)的,那么父進(jìn)程終止使得shell認(rèn)為該命令已經(jīng)執(zhí)行完畢。同時(shí)保證該進(jìn)程不是一個(gè)進(jìn)程組的組長進(jìn)程)

3、調(diào)用setsid創(chuàng)建一個(gè)新會(huì)話。(setsid會(huì)使1、調(diào)用進(jìn)程成為新會(huì)話的首進(jìn)程;2、調(diào)用進(jìn)程成為一個(gè)進(jìn)程組的組長進(jìn)程;3、調(diào)用進(jìn)程沒有控制終端)

4、將當(dāng)前工作目錄更改為根目錄;

5、關(guān)閉不再需要的文件描述符;

6、忽略SIGCHLD信號(hào);

代碼實(shí)現(xiàn)mydemon:

榪欓噷鍐欏浘鐗囨弿榪? title=

榪欓噷鍐欏浘鐗囨弿榪? title=

榪欓噷鍐欏浘鐗囨弿榪? title=

除了自己實(shí)現(xiàn)外,我們還可以調(diào)用系統(tǒng)中的demon進(jìn)行設(shè)置;

進(jìn)行第二次fork的原因?

要明晰第二次fork的原因,就必須明晰這兩次fork的作用。

第一次fork的作用是:1、讓shell認(rèn)為這條命令已經(jīng)終止,不用掛在終端輸入上;

2、為之后的setsid服務(wù),因?yàn)檎{(diào)用setsid函數(shù)的進(jìn)程不能是進(jìn)程組組長,如果不fork出子進(jìn)程,則此時(shí)的父進(jìn)程是進(jìn)程組組長,就無法調(diào)用setsid。(當(dāng)子進(jìn)程調(diào)用完setsid函數(shù)之后,子進(jìn)程是會(huì)話組長也是進(jìn)程組組長,并且脫離了控制終端,此時(shí),不管控制終端如何操作,新的進(jìn)程都不會(huì)收到一些信號(hào)使得進(jìn)程退出。)

(2)第二次fork的作用:

雖然當(dāng)前關(guān)閉了和終端的聯(lián)系,但是后期可能會(huì)誤操作打開了終端。只有確定會(huì)話首進(jìn)程能打開終端設(shè)備,也就是再fork一次,再把父進(jìn)程退出,再次fork的子進(jìn)程作為守護(hù)進(jìn)程繼續(xù)運(yùn)行,保證了該精靈進(jìn)程不是對(duì)話期的首進(jìn)程。

第二次不是必須的,是可選的,市面上有些開源項(xiàng)目也是fork一次

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 13個(gè)實(shí)用的Apache Rewrite重寫規(guī)則

    13個(gè)實(shí)用的Apache Rewrite重寫規(guī)則

    這篇文章主要介紹了13個(gè)實(shí)用的Apache Rewrite重寫規(guī)則,需要的朋友可以參考下
    2014-03-03
  • linux下vsftpd的安裝及配置使用詳細(xì)步驟(推薦)

    linux下vsftpd的安裝及配置使用詳細(xì)步驟(推薦)

    這篇文章主要介紹了linux下vsftpd的安裝及配置使用詳細(xì)步驟 ,需要的朋友可以參考下
    2018-01-01
  • LNMP系列教程之一 添加域名建立站點(diǎn)

    LNMP系列教程之一 添加域名建立站點(diǎn)

    今天我在昨天安裝過后的教程基礎(chǔ)之后,添加我們需要的站點(diǎn)建立網(wǎng)站。雖然我們昨天在添加主域名的時(shí)候已經(jīng)添加了域名,但遠(yuǎn)遠(yuǎn)是不夠的,我們需要添加不同的域名建立多個(gè)網(wǎng)站
    2012-09-09
  • 干貨 | Linux新手入門好書推薦

    干貨 | Linux新手入門好書推薦

    今天在知乎上看到了這樣一個(gè)問答:學(xué)習(xí)操作系統(tǒng)的知識(shí),看哪本書好?讀完之后,我決定理一下操作系統(tǒng)方面的好書推薦給需要學(xué)習(xí)這個(gè)方向知識(shí)的人。下面這篇文章主要給Linux新手們推薦了一些入門的好書,需要的朋友可以參考下。
    2017-10-10
  • CentOS7更改默認(rèn)SSH端口與配置指南

    CentOS7更改默認(rèn)SSH端口與配置指南

    SSH是 Linux 服務(wù)器遠(yuǎn)程管理的核心工具,其默認(rèn)監(jiān)聽端口為 22,由于端口 22 眾所周知,這也使得服務(wù)器容易受到自動(dòng)化掃描和暴力 破解攻擊,本文將系統(tǒng)性地介紹如何在 CentOS 7 系統(tǒng)中安全地更改 SSH 端口,解決 SELinux 和防火墻相關(guān)配置,需要的朋友可以參考下
    2025-04-04
  • Apache偽靜態(tài)Rewrite詳解

    Apache偽靜態(tài)Rewrite詳解

    這篇文章主要介紹了Apache偽靜態(tài)Rewrite的相關(guān)知識(shí)以及使用方法和使用實(shí)例,需要的朋友可以參考下
    2014-03-03
  • Centos7搭建sftp服務(wù)流程

    Centos7搭建sftp服務(wù)流程

    本篇文章給大家詳細(xì)分析了Centos7搭建sftp服務(wù)的全過程以及相關(guān)命令分享,一起需要下。
    2018-02-02
  • Linux服務(wù)器選擇什么版本好

    Linux服務(wù)器選擇什么版本好

    服務(wù)器選擇什么版本的linux,這個(gè)問題是個(gè)老生常談的問題,每個(gè)月都有人討論,根據(jù)我運(yùn)維過1000臺(tái) server的經(jīng)驗(yàn),回答如下
    2014-03-03
  • Vim編輯器常用的命令總結(jié)

    Vim編輯器常用的命令總結(jié)

    使用 Vim 的時(shí)間不長,但如今已經(jīng)離不開熟悉的 Vim 編輯模式了。 Vim 的學(xué)習(xí)曲線是非常陡的,一開始學(xué)習(xí)的時(shí)候,面對(duì)很多的操作命令要去記住,常常望而卻步。其實(shí),只要記住一些常用的命令,加之在工作中堅(jiān)持使用 Vim 進(jìn)行編輯,很快就能得心應(yīng)手了。下面來一起看看吧。
    2017-04-04
  • 最完的htaccess文件用法收集整理

    最完的htaccess文件用法收集整理

    最完的htaccess文件用法收集,這篇文章確實(shí)很詳細(xì),需要的朋友可以參考下
    2012-05-05

最新評(píng)論

博湖县| 桃江县| 泰和县| 泊头市| 西乌珠穆沁旗| 巩留县| 卢龙县| 江山市| 金堂县| 北流市| 漳浦县| 昆明市| 奉化市| 绥江县| 比如县| 大石桥市| 仪陇县| 万盛区| 盐池县| 建德市| 灵寿县| 星座| 沙雅县| 固阳县| 定远县| 贵定县| 德清县| 山阳县| 孟连| 乐安县| 苏尼特右旗| 彭泽县| 沂源县| 新田县| 天水市| 安庆市| 抚宁县| 农安县| 洛浦县| 津市市| 丰宁|