成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

守護(hù)進(jìn)程

Carbs / 549人閱讀

摘要:守護(hù)進(jìn)程為什么需要守護(hù)進(jìn)程呢普通進(jìn)程在運(yùn)行時(shí)可以被控制終端發(fā)出的信號(hào)打斷而守護(hù)進(jìn)程由于脫離了控制終端所以不會(huì)被其打斷守護(hù)進(jìn)程創(chuàng)建的標(biāo)準(zhǔn)流程調(diào)用設(shè)置文件創(chuàng)建的掩碼子進(jìn)程并關(guān)閉父進(jìn)程調(diào)用創(chuàng)建新會(huì)話把當(dāng)前工作目錄切換為根目錄不需要的文件描述符全部

守護(hù)進(jìn)程

為什么需要守護(hù)進(jìn)程呢? 普通進(jìn)程在運(yùn)行時(shí)可以被控制終端發(fā)出的信號(hào)打斷, 而守護(hù)進(jìn)程由于脫離了控制終端, 所以不會(huì)被其打斷.

守護(hù)進(jìn)程創(chuàng)建的標(biāo)準(zhǔn)流程

調(diào)用umask設(shè)置文件創(chuàng)建的掩碼

fork子進(jìn)程并關(guān)閉父進(jìn)程

調(diào)用posix_setsid創(chuàng)建新會(huì)話

把當(dāng)前工作目錄切換為根目錄

不需要的文件描述符全部關(guān)閉

標(biāo)準(zhǔn)輸入輸出錯(cuò)誤重定向

除了第2步和第3步,其它的其實(shí)都是可選的.

守護(hù)進(jìn)程PHP代碼
function daemon()
{
    umask(0);
    $pid = pcntl_fork();
    if ($pid > 0) {
        exit(0);
    } elseif ($pid < 0) {
        printf("fork failed");
    }

    posix_setsid();

    $pid = pcntl_fork();
    if ($pid > 0) {
        exit(0);
    } elseif ($pid < 0) {
        printf("fork failed");
    }
}

把一個(gè)進(jìn)程變成守護(hù)進(jìn)程, 首先要讓該進(jìn)程脫離當(dāng)前的控制終端, 要達(dá)到這個(gè)目的需要調(diào)用posix_setsid.

但我們的代碼為什么在調(diào)用posix_setsid之前要fork一次呢? 這是因?yàn)檎{(diào)用posix_setsid的進(jìn)程必須不能是session leader, 為了確保萬無一失, 會(huì)先fork一個(gè)子進(jìn)程, fork出來的子進(jìn)程就必然不是session leader了.

那在調(diào)用posix_setsid之后為什么還要再fork一次呢? 其實(shí)這必不是必須的, nginx在實(shí)現(xiàn)daemon時(shí)就沒有fork兩次.
很多daemon的實(shí)現(xiàn)都沒有fork兩次. 只是有人推薦在sysv system上, 再fork一次, 可以避免守護(hù)進(jìn)程打開控制終端, 因?yàn)樵?b>fork一次之后, 子進(jìn)程就不是session leader了.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22557.html

相關(guān)文章

  • Docker命令行與守護(hù)進(jìn)程如何交互?

    摘要:命令行是與守護(hù)進(jìn)程進(jìn)行交互的主要工具。感興趣的話,你也可以開發(fā)一個(gè),使用與守護(hù)進(jìn)程進(jìn)行交互就好了。命令行與守護(hù)進(jìn)程如何交互從左至右理解上圖最左側(cè)是客戶端,即命令行。而在與上運(yùn)行時(shí),守護(hù)進(jìn)程事實(shí)上運(yùn)行在虛擬機(jī)中。 譯者按: Docker是典型的C/S架構(gòu),其守護(hù)進(jìn)程(daemon)與命令行(CLI)是通過REST API進(jìn)行交互的。 原文: Understanding how the D...

    willin 評(píng)論0 收藏0
  • 一起學(xué)并發(fā)編程 - 守護(hù)線程

    摘要:的作用是為其他線程的運(yùn)行提供服務(wù),比如說線程。在某些平臺(tái)上,指定一個(gè)較高的參數(shù)值可能使線程在拋出之前達(dá)到較大的遞歸深度。參數(shù)的值與最大遞歸深度和并發(fā)程度之間的關(guān)系細(xì)節(jié)與平臺(tái)有關(guān)。 今天研究了下Java線程基礎(chǔ)知識(shí),發(fā)現(xiàn)以前太多知識(shí)知識(shí)略略帶過了,比較說Java的線程機(jī)制,在Java中有兩類線程:User Thread(用戶線程)、Daemon Thread(守護(hù)線程),以及構(gòu)造器中的s...

    junnplus 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<