一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

Linux愛好者 ? 來源:Linux愛好者 ? 作者:Liao Tonglang ? 2020-12-07 16:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

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

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

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

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

因為默認(rèn)情況下,進(jìn)程的umask來源于父進(jìn)程shell的umask。如果不執(zhí)行umask(0),那么父進(jìn)程的shell就會影響daemon,造成daemon每次執(zhí)行的umask信息不一致。

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

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

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

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

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

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

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

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

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

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

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

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

責(zé)任編輯:haq

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

    關(guān)注

    88

    文章

    3689

    瀏覽量

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

    關(guān)注

    3

    文章

    4380

    瀏覽量

    64844

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    KiCad 中的自定義規(guī)則(KiCon 演講)

    設(shè)計規(guī)則 展開,重點(diǎn)探討了 那些復(fù)雜卻強(qiáng)大的特性。 由于這些規(guī)則本質(zhì)上是基于文本表達(dá)的,需要用戶細(xì)致入微的理解。演講的 核心目標(biāo) 是引導(dǎo)用戶有效實施這些規(guī)則,從而 規(guī)避布線問題、提升制
    的頭像 發(fā)表于 06-16 11:17 ?600次閱讀
    KiCad 中的自定義<b class='flag-5'>規(guī)則</b>(KiCon 演講)

    需要遵循哪些步驟才能在協(xié)同處理器模式下配置 FX2/FX3?

    FX2/FX3 替換 CY7C67300。 我們需要遵循哪些步驟才能在協(xié)同處理器模式下配置 FX2/FX3? 1。是否需要單獨(dú)編程 FX2/FX3 才能與我們的主控制器接口? 2。GPIF II 支持并行總線接口嗎?
    發(fā)表于 05-26 07:58

    2025年村田電感型號命名規(guī)則深度解析

    最新命名邏輯。 一、基礎(chǔ)結(jié)構(gòu)解析 村田電感型號由 12位字符 組成,遵循“LQ+結(jié)構(gòu)+尺寸+應(yīng)用+類別+電感值+精度+特征+電極+包裝”的編碼規(guī)則。例如,典型型號“LQH32MN331K23L”可拆解為: LQ :片狀線圈(型號標(biāo)識) H :繞線型(鐵氧體磁芯結(jié)構(gòu)
    的頭像 發(fā)表于 04-15 14:29 ?580次閱讀

    Linux進(jìn)程狀態(tài)詳解

    進(jìn)程狀態(tài)是task_struct內(nèi)的一個整數(shù);進(jìn)行:進(jìn)程在調(diào)度隊列中,進(jìn)程的狀態(tài)都是running,阻塞:等待某種設(shè)備或者資源就緒。進(jìn)程是一個隊列,設(shè)備也是一個隊列,當(dāng)我們讀磁盤,讀網(wǎng)
    的頭像 發(fā)表于 04-01 09:46 ?435次閱讀
    Linux<b class='flag-5'>進(jìn)程</b>狀態(tài)詳解

    使用HDDL卡運(yùn)行OpenVINO應(yīng)用程序容器或HDDL daemon容器時遇到錯誤,怎么解決?

    說明在使用 HDDL 卡運(yùn)行OpenVINO應(yīng)用程序容器或 HDDL daemon 容器時遇到錯誤: 錯誤: shm_open() failed: errno=2 (No such file
    發(fā)表于 03-05 08:11

    如何確保PCBA板加工質(zhì)量?這些規(guī)則不能少!

    焊接和測試,形成具有特定功能的電子模塊。由于PCBA板加工涉及多個步驟和工藝,因此需要遵循嚴(yán)格的規(guī)則以確保產(chǎn)品質(zhì)量和生產(chǎn)效率。
    的頭像 發(fā)表于 02-18 17:46 ?424次閱讀

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

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

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

    關(guān)于某個數(shù)據(jù)集合的一次運(yùn)行活動。作為系統(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)建時
    的頭像 發(fā)表于 12-18 11:01 ?477次閱讀
    深入解析Linux程序與<b class='flag-5'>進(jìn)程</b>

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

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

    一文搞懂Linux進(jìn)程的睡眠和喚醒

    一、常見的進(jìn)程狀態(tài)與理解 在操作系統(tǒng)內(nèi)部,有專門用來管理進(jìn)程的結(jié)構(gòu)體,叫做struct task_struct,也稱作進(jìn)程控制塊(PCB),主要包含描述進(jìn)程的相關(guān)信息,如
    發(fā)表于 11-04 15:15

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

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

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

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

    網(wǎng)關(guān)的設(shè)置規(guī)則

    網(wǎng)關(guān)的設(shè)置規(guī)則涉及多個方面,包括硬件安裝、網(wǎng)絡(luò)連接、基本配置、高級配置以及安全設(shè)置等。以下是一篇關(guān)于網(wǎng)關(guān)設(shè)置規(guī)則的詳細(xì)指南,旨在幫助用戶正確配置和管理網(wǎng)關(guān)設(shè)備。
    的頭像 發(fā)表于 09-30 11:48 ?4704次閱讀

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

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

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

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