那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

編寫(xiě)daemon進(jìn)程需要遵循哪些規(guī)則?

Linux愛(ài)好者 ? 來(lái)源:Linux愛(ài)好者 ? 作者:Liao Tonglang ? 2020-12-07 16:24 ? 次閱讀

Daemon 進(jìn)程生命周期長(zhǎng)且在后臺(tái)運(yùn)行。編寫(xiě)daemon進(jìn)程需要遵循哪些規(guī)則呢?

1、執(zhí)行fork()函數(shù),父進(jìn)程退出,子進(jìn)程繼續(xù)

執(zhí)行這一步,原因有兩個(gè):

父進(jìn)程可能是進(jìn)程組的組長(zhǎng),從而不能夠執(zhí)行后面要執(zhí)行的setsid函數(shù)。

子進(jìn)程繼承了父進(jìn)程的進(jìn)程組ID,一定不會(huì)是進(jìn)程組組長(zhǎng),所以子進(jìn)程一定可以執(zhí)行setsid。

如果daemon是從終端命令行啟動(dòng)的,那么父進(jìn)程退出后,shell會(huì)顯示shell提示符,讓子進(jìn)程在后臺(tái)執(zhí)行。

2、子進(jìn)程執(zhí)行下面三個(gè)步驟

修改當(dāng)前目錄為根目錄 如果當(dāng)前工作路徑上包含根文件系統(tǒng)以外的文件系統(tǒng),那么這個(gè)文件系統(tǒng)將不能被卸載。

當(dāng)然也可以改成其它合適的目錄。這里使用函數(shù)chdir("/")。

調(diào)用setsid 這是為了切斷與控制終端的所有關(guān)系,創(chuàng)建一個(gè)新的會(huì)話。

此時(shí)無(wú)論終端是否發(fā)送SIGIN、SIGQUIT或者SIGTSTP或者斷開(kāi),都與daemon進(jìn)程無(wú)關(guān)。

使用umask(0)設(shè)置文件模式創(chuàng)建掩碼為0 這一步的目的是讓daemon進(jìn)程創(chuàng)建文件的權(quán)限屬性與shell脫離關(guān)系。

因?yàn)槟J(rèn)情況下,進(jìn)程的umask來(lái)源于父進(jìn)程shell的umask。如果不執(zhí)行umask(0),那么父進(jìn)程的shell就會(huì)影響daemon,造成daemon每次執(zhí)行的umask信息不一致。

3、再次執(zhí)行fork,父進(jìn)程退出,子進(jìn)程繼續(xù)

執(zhí)行完前面兩步之后,新建了會(huì)話,進(jìn)程是會(huì)話的首進(jìn)程,也是進(jìn)程組的首進(jìn)程;進(jìn)程ID,進(jìn)程組ID,會(huì)話ID相同;進(jìn)程和終端失去聯(lián)系。

但是還差一步。daemon進(jìn)程有可能會(huì)打開(kāi)一個(gè)終端設(shè)備:

intfd=open("/dev/console",O_RDWR);這個(gè)設(shè)備是否會(huì)成為daemon進(jìn)程的控制終端,取決于兩點(diǎn):

daemon進(jìn)程是不是會(huì)話的首進(jìn)程。

系統(tǒng)實(shí)現(xiàn)。(BSD的實(shí)現(xiàn)不會(huì)成為daemon的控制終端,但POSIX由具體實(shí)現(xiàn)決定)。

為了萬(wàn)無(wú)一失,需要使用fork()確保daemon不是會(huì)話的首進(jìn)程。

4、關(guān)閉stdin,stdout,stderr

關(guān)閉之后應(yīng)該打開(kāi)/dev/null將0,1,2描述符指向它。這是為了防止后面執(zhí)行0,1,2上的I/O時(shí)出現(xiàn)錯(cuò)誤。

C庫(kù)的daemon函數(shù)和這個(gè)流程相似,但沒(méi)有第二次fork。

原文標(biāo)題:Daemon 進(jìn)程的創(chuàng)建

文章出處:【微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3637

    瀏覽量

    93986
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4346

    瀏覽量

    62974

原文標(biāo)題:Daemon 進(jìn)程的創(chuàng)建

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    村田代理商告訴你貼片電容選用的規(guī)則

    在選擇貼片電容時(shí),需要遵循一系列一般規(guī)則,以確保所選電容能夠滿足電路的設(shè)計(jì)需求并具備較高的可靠性和穩(wěn)定性。以下是一些關(guān)鍵的選用規(guī)則: 一、電路需求分析 確定電容的作用: 首先要明確貼片
    的頭像 發(fā)表于 12-23 15:09 ?199次閱讀

    深入解析Linux程序與進(jìn)程

    關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。作為系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。 程序與進(jìn)程的關(guān)系 進(jìn)程的狀態(tài) 基礎(chǔ)進(jìn)程狀態(tài) 創(chuàng)建狀態(tài):進(jìn)程在創(chuàng)建時(shí)
    的頭像 發(fā)表于 12-18 11:01 ?158次閱讀
    深入解析Linux程序與<b class='flag-5'>進(jìn)程</b>

    芯盾時(shí)代參與編寫(xiě)零信任相關(guān)標(biāo)準(zhǔn)

    參加會(huì)議,就《標(biāo)準(zhǔn)》草案展開(kāi)全面、深度的討論,并明確了下一階段的工作計(jì)劃和目標(biāo)。《標(biāo)準(zhǔn)》的編寫(xiě)工作取得了重要進(jìn)展,編寫(xiě)進(jìn)程穩(wěn)步、有序推進(jìn)。
    的頭像 發(fā)表于 11-05 11:07 ?851次閱讀

    改造數(shù)據(jù)中心需要遵循這五大規(guī)則

    在數(shù)據(jù)中心改造過(guò)程中,數(shù)據(jù)存儲(chǔ)問(wèn)題可能是最艱巨的障礙,以下關(guān)于實(shí)現(xiàn)數(shù)據(jù)中心的改造的五大規(guī)則,可能會(huì)對(duì)您有所啟發(fā)。 ? 1.使存儲(chǔ)虛擬化更容易 為了實(shí)現(xiàn)數(shù)據(jù)中心的改造,首先實(shí)現(xiàn)存儲(chǔ)虛擬化。但是,這項(xiàng)
    的頭像 發(fā)表于 10-31 11:02 ?194次閱讀

    【軟件干貨】Android應(yīng)用進(jìn)程如何保活?

    在Android應(yīng)用程序中,為了保證應(yīng)用的正常運(yùn)行和穩(wěn)定性,有時(shí)需要對(duì)應(yīng)用進(jìn)程進(jìn)行保活。以下是一些實(shí)現(xiàn)進(jìn)程保活的方法:
    的頭像 發(fā)表于 10-15 17:05 ?566次閱讀
    【軟件干貨】Android應(yīng)用<b class='flag-5'>進(jìn)程</b>如何保活?

    【每天學(xué)點(diǎn)AI】五個(gè)階段帶你了解人工智能大模型發(fā)展史!

    20世紀(jì)50年代NLP的早期研究主要基于規(guī)則的方法,依賴(lài)于語(yǔ)言學(xué)專(zhuān)家手工編寫(xiě)規(guī)則和詞典。這些規(guī)則通常是關(guān)于語(yǔ)法、語(yǔ)義和句法結(jié)構(gòu)的人工規(guī)則
    的頭像 發(fā)表于 09-25 16:51 ?574次閱讀
    【每天學(xué)點(diǎn)AI】五個(gè)階段帶你了解人工智能大模型發(fā)展史!

    DTU的設(shè)備號(hào)都在什么情況下需要填寫(xiě)呢?填寫(xiě)的規(guī)則是什么?

    DTU的設(shè)備號(hào)都在什么情況下需要填寫(xiě),填寫(xiě)的規(guī)則是什么?
    發(fā)表于 07-26 08:18

    高速pcb布線規(guī)則有哪些

    高速pcb布線規(guī)則有哪些 高速PCB布線規(guī)則 摘要:隨著電子技術(shù)的快速發(fā)展,高速PCB設(shè)計(jì)變得越來(lái)越重要。為了確保信號(hào)完整性和電磁兼容性,遵循一定的布線規(guī)則至關(guān)重要。本文將詳細(xì)介紹高速
    的頭像 發(fā)表于 06-10 17:33 ?972次閱讀

    一句話讓你理解線程和進(jìn)程

    今天給大家分享一下線程與進(jìn)程,主要包含以下幾部分內(nèi)容:一句話說(shuō)明線程和進(jìn)程操作系統(tǒng)為什么需要進(jìn)程為什么要引入線程一圖說(shuō)明線程和進(jìn)程的關(guān)系一句
    的頭像 發(fā)表于 06-04 08:04 ?1300次閱讀
    一句話讓你理解線程和<b class='flag-5'>進(jìn)程</b>

    嵌入式系統(tǒng)中C語(yǔ)言的編寫(xiě)規(guī)范

    最重要的一條規(guī)則 編寫(xiě)代碼時(shí)最重要的一條規(guī)則是:檢查周?chē)拇a并嘗試模仿它。 作為維護(hù)人員,如果收到的補(bǔ)丁明顯與周?chē)a的編碼風(fēng)格不同,這是令人沮喪的。這是不尊重人的,就像某人穿著泥濘的鞋子走進(jìn)
    的頭像 發(fā)表于 05-11 08:49 ?1236次閱讀

    FPGA入門(mén)必備:Testbench仿真文件編寫(xiě)實(shí)例詳解

    編寫(xiě)完HDL代碼后,往往需要通過(guò)仿真軟件Modelsim或者Vivadao自帶的仿真功能對(duì)HDL代碼功能進(jìn)行驗(yàn)證,此時(shí)我們需要編寫(xiě)Testbench文件對(duì)HDL功能進(jìn)行測(cè)試驗(yàn)證。
    發(fā)表于 04-29 10:43 ?2271次閱讀

    降低RF電路寄生信號(hào)的八個(gè)設(shè)計(jì)規(guī)則

    RF產(chǎn)品電路布局要想降低寄生信號(hào),需要RF工程師發(fā)揮創(chuàng)造性。記住以下這八條規(guī)則,不但有助于加速產(chǎn)品上市進(jìn)程,而且還可提高工作日程的可預(yù)見(jiàn)性。規(guī)則1:接地通孔應(yīng)位于接地參考層開(kāi)關(guān)處流經(jīng)所
    的頭像 發(fā)表于 04-24 08:05 ?970次閱讀
    降低RF電路寄生信號(hào)的八個(gè)設(shè)計(jì)<b class='flag-5'>規(guī)則</b>

    代碼檢查的方式有三種

    等方面的問(wèn)題。那么在代碼檢查服務(wù)中,提到的編程規(guī)范,規(guī)則集,規(guī)則規(guī)則用例(場(chǎng)景、誤報(bào)、檢出)分別代表什么意思呢? 編程規(guī)范 在 SAST 靜態(tài)代碼檢查領(lǐng)域, 編程規(guī)范是一套在組織層面關(guān)于代碼
    的頭像 發(fā)表于 02-25 10:08 ?921次閱讀
    代碼檢查的方式有三種

    如何優(yōu)化 PCB 布線規(guī)則

    而言,限制或是規(guī)則非常重要;一如我們從小就要學(xué)會(huì)遵守社會(huì)與法律規(guī)則。同理,為PCB制定規(guī)則應(yīng)當(dāng)受到重視。雖然為此需要花費(fèi)時(shí)間進(jìn)行研究并投入精力,但設(shè)置這些限制條件
    的頭像 發(fā)表于 02-19 13:00 ?1310次閱讀
    如何優(yōu)化 PCB 布線<b class='flag-5'>規(guī)則</b>?

    鴻蒙OS跨進(jìn)程IPC與RPC通信

    使用Binder驅(qū)動(dòng),用于設(shè)備內(nèi)的跨進(jìn)程通信,后者使用軟總線驅(qū)動(dòng),用于跨設(shè)備跨進(jìn)程通信。需要進(jìn)程通信的原因是因?yàn)槊總€(gè)進(jìn)程都有自己獨(dú)立的資源
    發(fā)表于 02-17 14:20
    百家乐官网娱乐网真人娱乐网| 大发888赌场 游戏平台| 网络百家乐官网诈骗| 大发888娱乐城真假| 百家乐官网官网| 兰西县| 新锦江百家乐娱乐网| 太阳城百家乐官网网址--| 大发888游戏平台hgx2dafa888gw| 百家乐官网怎样赢| 博彩网论坛| 单机百家乐小游戏| 百家乐官网庄闲排列| 535棋牌游戏| 太阳城百家乐作弊| 现金百家乐官网代理| 大发888手机| 博联百家乐游戏| 老牌百家乐官网娱乐城| 水果机8键遥控器| 百家乐大赢家书籍| 百家乐官网最佳投注办法| 亲朋棋牌官方下载| 太阳城百家乐娱乐官方网| 利都百家乐官网国际娱乐场开户注册 | 狮威百家乐赌场娱乐网规则 | 百家乐官网太阳城球讯网| 百家乐作弊工具| 百家乐官网软件官方| 大发888娱乐游戏注册| 玩百家乐五湖四海娱乐城| 百家乐官网策略大全| 皇家轮盘| 二八杠单机游戏| 澳门百家乐网上| 女优百家乐官网的玩法技巧和规则| 大发888娱乐网下| 百家乐群博乐吧blb8v| 真钱百家乐赌博| 太阳城百家乐官网娱乐官方网| 石门县|