国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

    關注

    90

    文章

    3716

    瀏覽量

    97186
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67507

原文標題:Daemon 進程的創建

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    飛凌嵌入式ElfBoard-進程之什么是進程

    在Linux系統中,有些基本命令能夠查看到進程的信息。例如ps、top、pgrep、pstree等;這些命令為用戶提供了查看和管理Linux進程信息的多種功能。通過合理使用這些命令,用戶可以監控
    發表于 03-02 08:49

    飛凌嵌入式ElfBoard-進程之什么是進程

    是靜態的,不占用系統資源,只有在被執行時才會轉換為進程。程序通常有多種表現形式,常見的表現形式如下源代碼形式:使用編程語言(如:C語言)寫成的一系列語句組成,是人類可以閱讀的文本文件;想要執行程序,需要
    發表于 01-26 08:42

    進程概念和特征

    進程的概念   在多道程序環境下,允許多個程序并發執行,此時它們將失去封閉性,并具有間斷性及不可再現性的特征。為此引入了進程(Process)的概念,以便更好地描述和控制程序的并發執行,實現操作系統
    發表于 01-15 06:39

    進程通信

    訪問的共享空間,通過對這片共享空間進行寫/讀操作實現進程之間的信息交換。在對共享空間進行寫/讀操作時,需要使用同步互斥工具(如 P操作、V操作),對共享空間的寫/讀進行控制。共享存儲又分為兩種:低級
    發表于 01-15 06:16

    進程的控制

    是:   1. 在該事件的等待隊列中找到相應進程的PCB。   2. 將其從等待隊列中移出,并置其狀態為就緒狀態。   3. 把該PCB插入就緒隊列中,等待調度程序調度。   需要注意的是,Block原語
    發表于 01-15 06:05

    解析Linux的進程、線程和協程

    )輕量級:相對于進程,線程的創建和切換開銷較小。 (3)同步與通信:線程之間需要通過同步機制(如互斥鎖、信號量)來保證數據的一致性。 協程(Coroutine) 協程是一種輕量級的用戶態線程,它們
    發表于 12-22 11:00

    FT62FC6X 8位微控制器型號命名規則,引腳介紹及PORT端口結構框圖

    FT62FC6X系列的型號命名規則、引腳介紹以及PORT端口結構框圖,幫助讀者更好地理解和應用這一系列微控制器。 ? FT62FC6X型號命名規則 FT62FC6X系列微控制器的型號命名遵循了一套嚴格的
    的頭像 發表于 09-18 16:22 ?986次閱讀
    FT62FC6X 8位微控制器型號命名<b class='flag-5'>規則</b>,引腳介紹及PORT端口結構框圖

    【HZ-T536開發板免費體驗】—— linux 進程創建

    Linux進程通信方式有這幾種: 1。管道 2。信號量 3。消息隊列 4。共享內存 在本帖子中,我會講解fork(),exit()系統調用的實踐。通過應用編程來實現系統調用。 1,進程創建 打開
    發表于 09-01 20:49

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

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

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

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

    需要遵循哪些步驟才能在協同處理器模式下配置 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 ?1803次閱讀

    需要點表≠無規則!深控技術工業網關的智能數據映射技術

    在工業數據采集領域,“無點表”常被誤解為數據采集的“無序化”,而深控技術通過動態數據建模與語義化標簽自動生成技術,重新定義了工業數據治理的規則體系。
    的頭像 發表于 04-11 15:21 ?763次閱讀
    不<b class='flag-5'>需要</b>點表≠無<b class='flag-5'>規則</b>!深控技術工業網關的智能數據映射技術

    Linux進程狀態詳解

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

    請問如何在Python中實現多線程與多進程的協作?

    大家好!我最近在開發一個Python項目時,需要同時處理多個任務,且每個任務需要不同的計算資源。我想通過多線程和多進程的組合來實現并發,但遇到了一些問題。 具體來說,我有兩個任務,一個是I/O密集型
    發表于 03-11 06:57