女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

編寫daemon進程需要遵循哪些規則?

Linux愛好者 ? 來源:Linux愛好者 ? 作者:Liao Tonglang ? 2020-12-07 16:24 ? 次閱讀

Daemon 進程生命周期長且在后臺運行。編寫daemon進程需要遵循哪些規則呢?

1、執行fork()函數,父進程退出,子進程繼續

執行這一步,原因有兩個:

父進程可能是進程組的組長,從而不能夠執行后面要執行的setsid函數。

子進程繼承了父進程的進程組ID,一定不會是進程組組長,所以子進程一定可以執行setsid。

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

2、子進程執行下面三個步驟

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

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

調用setsid 這是為了切斷與控制終端的所有關系,創建一個新的會話。

此時無論終端是否發送SIGIN、SIGQUIT或者SIGTSTP或者斷開,都與daemon進程無關。

使用umask(0)設置文件模式創建掩碼為0 這一步的目的是讓daemon進程創建文件的權限屬性與shell脫離關系。

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

3、再次執行fork,父進程退出,子進程繼續

執行完前面兩步之后,新建了會話,進程是會話的首進程,也是進程組的首進程;進程ID,進程組ID,會話ID相同;進程和終端失去聯系。

但是還差一步。daemon進程有可能會打開一個終端設備:

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

daemon進程是不是會話的首進程。

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

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

4、關閉stdin,stdout,stderr

關閉之后應該打開/dev/null將0,1,2描述符指向它。這是為了防止后面執行0,1,2上的I/O時出現錯誤。

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

原文標題:Daemon 進程的創建

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

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3679

    瀏覽量

    94863
  • 函數
    +關注

    關注

    3

    文章

    4368

    瀏覽量

    64180

原文標題:Daemon 進程的創建

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

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

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

    Linux進程狀態詳解

    進程狀態是task_struct內的一個整數;進行:進程在調度隊列中,進程的狀態都是running,阻塞:等待某種設備或者資源就緒。進程是一個隊列,設備也是一個隊列,當我們讀磁盤,讀網
    的頭像 發表于 04-01 09:46 ?278次閱讀
    Linux<b class='flag-5'>進程</b>狀態詳解

    使用HDDL卡運行OpenVINO應用程序容器或HDDL daemon容器時遇到錯誤,怎么解決?

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

    如何確保PCBA板加工質量?這些規則不能少!

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

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

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

    深入解析Linux程序與進程

    關于某個數據集合的一次運行活動。作為系統進行資源分配和調度的基本單位,是操作系統結構的基礎。 程序與進程的關系 進程的狀態 基礎進程狀態 創建狀態:進程在創建時
    的頭像 發表于 12-18 11:01 ?403次閱讀
    深入解析Linux程序與<b class='flag-5'>進程</b>

    芯盾時代參與編寫零信任相關標準

    參加會議,就《標準》草案展開全面、深度的討論,并明確了下一階段的工作計劃和目標。《標準》的編寫工作取得了重要進展,編寫進程穩步、有序推進。
    的頭像 發表于 11-05 11:07 ?1262次閱讀

    一文搞懂Linux進程的睡眠和喚醒

    一、常見的進程狀態與理解 在操作系統內部,有專門用來管理進程的結構體,叫做struct task_struct,也稱作進程控制塊(PCB),主要包含描述進程的相關信息,如
    發表于 11-04 15:15

    改造數據中心需要遵循這五大規則

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

    【軟件干貨】Android應用進程如何保活?

    在Android應用程序中,為了保證應用的正常運行和穩定性,有時需要對應用進程進行保活。以下是一些實現進程保活的方法:
    的頭像 發表于 10-15 17:05 ?1028次閱讀
    【軟件干貨】Android應用<b class='flag-5'>進程</b>如何保活?

    【每天學點AI】五個階段帶你了解人工智能大模型發展史!

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

    DTU的設備號都在什么情況下需要填寫呢?填寫的規則是什么?

    DTU的設備號都在什么情況下需要填寫,填寫的規則是什么?
    發表于 07-26 08:18

    高速pcb布線規則有哪些

    高速pcb布線規則有哪些 高速PCB布線規則 摘要:隨著電子技術的快速發展,高速PCB設計變得越來越重要。為了確保信號完整性和電磁兼容性,遵循一定的布線規則至關重要。本文將詳細介紹高速
    的頭像 發表于 06-10 17:33 ?1372次閱讀

    一句話讓你理解線程和進程

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