国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了守護(hù)進(jìn)程(精靈進(jìn)程)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

前言

1.如何理解前臺(tái)進(jìn)程和后臺(tái)進(jìn)程

2.守護(hù)進(jìn)程的概念

3.為什么會(huì)存在守護(hù)進(jìn)程

4.如何實(shí)現(xiàn)守護(hù)進(jìn)程

5.測(cè)試

總結(jié)


前言

? ? ? ? 今天我們要介紹的是關(guān)于守護(hù)進(jìn)程如何實(shí)現(xiàn),可能有小伙伴第一次聽到守護(hù)進(jìn)程這個(gè)概念,感覺很懵,知道進(jìn)程的概念,但是不知道守護(hù)進(jìn)程是什么,它是否和進(jìn)程有關(guān)聯(lián),以及守護(hù)進(jìn)程有什么意義,帶著這些疑問,下面,我們就一起來慢慢揭曉這些答案,相信看完這篇文章之后,關(guān)于守護(hù)進(jìn)程的話題,你將會(huì)有一個(gè)清晰的認(rèn)識(shí)。

1.如何理解前臺(tái)進(jìn)程和后臺(tái)進(jìn)程

如圖所示:

守護(hù)進(jìn)程(精靈進(jìn)程),服務(wù)器,linux,運(yùn)維

?jobs:查看后臺(tái)進(jìn)程

例:

[myl@VM-8-12-centos tcp]$ sleep 1000&   
[1] 5492
[myl@VM-8-12-centos tcp]$ sleep 1000 | sleep 2000 &
[2] 6514
[myl@VM-8-12-centos tcp]$ jobs
[1]-  Running                 sleep 1000 &
[2]+  Running                 sleep 1000 | sleep 2000 &

?說明:&表示將該進(jìn)程設(shè)置為后臺(tái)進(jìn)程運(yùn)行,jobs查看后臺(tái)進(jìn)程,前面的數(shù)字代表作業(yè)編號(hào)

守護(hù)進(jìn)程(精靈進(jìn)程),服務(wù)器,linux,運(yùn)維

PGID:代表同一個(gè)進(jìn)程組,一般將一個(gè)進(jìn)程組中的第一個(gè)稱為是組長,多個(gè)進(jìn)程共同完成一個(gè)作業(yè)

SID:代表會(huì)話ID,不同進(jìn)程組會(huì)話ID相同,代表屬于同一個(gè)會(huì)話

fg + 作業(yè)編號(hào):代表將該進(jìn)程設(shè)置為前臺(tái)進(jìn)程

ctrl + Z:暫停該進(jìn)程,并放到后臺(tái)

bg + 作業(yè)編號(hào),啟動(dòng)該進(jìn)程

[myl@VM-8-12-centos tcp]$ jobs
[1]- ?Running ? ? ? ? ? ? ? ? sleep 1000 &
[2]+ ?Running ? ? ? ? ? ? ? ? sleep 1000 | sleep 2000 &
[myl@VM-8-12-centos tcp]$ fg 2
sleep 1000 | sleep 2000
ls
pwd ?
^Z[1] ? Done ? ? ? ? ? ? ? ? ? ?sleep 1000

[2]+ ?Stopped ? ? ? ? ? ? ? ? sleep 1000 | sleep 2000
[myl@VM-8-12-centos tcp]$ jobs
[2]+ ?Stopped ? ? ? ? ? ? ? ? sleep 1000 | sleep 2000
[myl@VM-8-12-centos tcp]$ bg 2
[2]+ sleep 1000 | sleep 2000 &
[myl@VM-8-12-centos tcp]$ jobs
[2]+ ?Running ? ? ? ? ? ? ? ? sleep 1000 | sleep 2000 &

所以作業(yè)是可以前后臺(tái)進(jìn)行切換的。

當(dāng)客戶端退出的時(shí)候,之前的進(jìn)程也就退出了,包括前臺(tái)進(jìn)程和后臺(tái)進(jìn)程

2.守護(hù)進(jìn)程的概念

? ? ? ?上面我們介紹了前臺(tái)進(jìn)程和后臺(tái)進(jìn)程,前臺(tái)進(jìn)程只能有一個(gè),而后臺(tái)進(jìn)程可以有多個(gè),可以互相切換,都屬于同一個(gè)會(huì)話,共同特點(diǎn)就是當(dāng)客戶端退出之后不管是前臺(tái)進(jìn)程還是后臺(tái)進(jìn)程,都會(huì)退出,而我們今天要介紹的守護(hù)進(jìn)程是自成會(huì)話,自成進(jìn)程組和終端設(shè)備無關(guān),除非使用kill命令終止該進(jìn)程,否則將一直運(yùn)行,將這種進(jìn)程被稱為是守護(hù)進(jìn)程。

3.為什么會(huì)存在守護(hù)進(jìn)程

? ? ? ? 當(dāng)實(shí)現(xiàn)了一款服務(wù)器,服務(wù)器啟動(dòng)之后對(duì)外提供服務(wù),不能因?yàn)榭蛻舳送顺?,而服?wù)進(jìn)程也跟著退出了,所以一般將服務(wù)進(jìn)程會(huì)設(shè)置為守護(hù)進(jìn)程,一直對(duì)外提供服務(wù)。

4.如何實(shí)現(xiàn)守護(hù)進(jìn)程

setsid()函數(shù):生成一個(gè)會(huì)話ID,自成一個(gè)會(huì)話

#include <unistd.h>

pid_t setsid(void);

使用說明:調(diào)用該函數(shù)的進(jìn)程不能是進(jìn)程組的組長

實(shí)現(xiàn)代碼:

#pragma once

#include<signal.h>
#include<unistd.h>
#include<cstdlib>
#include<cassert>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define DEV "/dev/null" 
void daemonSelf(const char* curPath = nullptr)
{
    //1.讓調(diào)用進(jìn)程忽略掉異常的信號(hào)
    signal(SIGPIPE,SIG_IGN);
    //2.讓自己變成守護(hù)進(jìn)程的前提:以非組長的身份調(diào)用setsid
    if(fork() > 0)
        exit(0);
    //子進(jìn)程 --- 守護(hù)進(jìn)程,精靈進(jìn)程,本質(zhì)是孤兒進(jìn)程的一種
    pid_t n = setsid();
    assert(n != -1);
    //3.守護(hù)進(jìn)程默認(rèn)是脫離終端的,關(guān)閉或者重定向以前進(jìn)程默認(rèn)打開的文件:
    //dev/null文件的特點(diǎn):向該文件中寫入內(nèi)容,會(huì)自動(dòng)清空
    int fd = open(DEV,O_RDWR);
    if(fd >= 0)
    {
        dup2(fd,0);
        dup2(fd,1);
        dup2(fd,2);
    }
    else
    {
        close(0);
        close(1);
        close(2);
    }
    //4.可選,進(jìn)程執(zhí)行路勁發(fā)生更改:
    if(curPath)
        chdir(curPath);
}

此時(shí)就可以在服務(wù)器初始化完成,啟動(dòng)之前將該進(jìn)程設(shè)置為服務(wù)進(jìn)程,至此該進(jìn)程就不會(huì)再退出

5.測(cè)試

運(yùn)行截圖:

守護(hù)進(jìn)程(精靈進(jìn)程),服務(wù)器,linux,運(yùn)維

此時(shí)通過圖片觀察到,當(dāng)服務(wù)器啟動(dòng)之后,不再像之前那樣變?yōu)榍芭_(tái)進(jìn)程,而是自成會(huì)話作為后臺(tái)進(jìn)程,被其它客戶端訪問。

總結(jié)

? ? ? ? 相信看完之后,大家對(duì)守護(hù)進(jìn)程是什么就非常熟悉了,今天關(guān)于守護(hù)進(jìn)程的介紹就到這里了,感謝大家的閱讀,我們下次再見。文章來源地址http://www.zghlxwxcb.cn/news/detail-669878.html

到了這里,關(guān)于守護(hù)進(jìn)程(精靈進(jìn)程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【運(yùn)維】Linux 跨服務(wù)器復(fù)制文件文件夾

    如果是云服務(wù) 建議用內(nèi)網(wǎng)ip scp是secure copy的簡(jiǎn)寫,用于在Linux下進(jìn)行遠(yuǎn)程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機(jī)進(jìn)行拷貝不能跨服務(wù)器,而且scp傳輸是加密的??赡軙?huì)稍微影響一下速度。當(dāng)你服務(wù)器硬盤變?yōu)橹蛔x read only system時(shí),用scp可以幫你把文件移出來

    2024年02月08日
    瀏覽(109)
  • linux并發(fā)服務(wù)器 —— 多進(jìn)程并發(fā)(四)

    linux并發(fā)服務(wù)器 —— 多進(jìn)程并發(fā)(四)

    程序是包含一系列信息的文件,描述了如何在運(yùn)行時(shí)創(chuàng)建一個(gè)進(jìn)程; 進(jìn)程是正在運(yùn)行的程序的實(shí)例,可以用一個(gè)程序來創(chuàng)建多個(gè)進(jìn)程; 用戶內(nèi)存空間包含程序代碼以及代碼所使用的變量,內(nèi)核數(shù)據(jù)結(jié)構(gòu)用于維護(hù)進(jìn)程狀態(tài)信息; 進(jìn)程控制塊(PCB):維護(hù)進(jìn)程相關(guān)的信息,tas

    2024年02月11日
    瀏覽(27)
  • 【Linux 服務(wù)器運(yùn)維】定時(shí)任務(wù) crontab 詳解 | 文末送書

    【Linux 服務(wù)器運(yùn)維】定時(shí)任務(wù) crontab 詳解 | 文末送書

    本文思維導(dǎo)圖概述的主要內(nèi)容: 1.1 什么是 crontab Crontab 是一個(gè)在 Unix 和 Linux 操作系統(tǒng)上 用于定時(shí)執(zhí)行任務(wù) 的工具。它允許用戶創(chuàng)建和管理計(jì)劃任務(wù),以便在特定的時(shí)間間隔或時(shí)間點(diǎn)自動(dòng)運(yùn)行命令或腳本。Crontab 是 cron table 的縮寫, cron 指的是 Unix 系統(tǒng)中的一個(gè)后臺(tái)進(jìn)程,它

    2024年02月08日
    瀏覽(129)
  • Linux服務(wù)器上查詢進(jìn)程 ps aux

    在Linux服務(wù)器上查詢進(jìn)程,有以下幾種方法: 使用ps命令。這個(gè)命令用于報(bào)告當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)??梢杂靡韵路绞绞褂胮s命令來查看進(jìn)程信息: ps aux:顯示系統(tǒng)中所有進(jìn)程的信息。 ps -e:顯示所有進(jìn)程的信息。 ps -f:顯示進(jìn)程的所有信息。 ps -l:以長格式顯示進(jìn)程信息。

    2024年02月05日
    瀏覽(36)
  • 【Linux運(yùn)維】shell腳本檢查服務(wù)器內(nèi)存和CPU利用率

    在管理服務(wù)器時(shí)候?qū)懥艘粋€(gè) shell腳本,在服務(wù)上實(shí)現(xiàn)每天凌晨3點(diǎn)查系統(tǒng)的指定文件夾下的容量大小,如果超過10G就要?jiǎng)h除3天前的內(nèi)容,還要時(shí)刻查詢內(nèi)存和cpu利用率,如果超過80%就要提示用戶出現(xiàn)過載 將以上代碼保存為一個(gè).sh文件,然后通過crontab在每天凌晨3點(diǎn)運(yùn)行即可:

    2024年02月09日
    瀏覽(33)
  • Linux服務(wù)器中查看進(jìn)程的四種方法

    1. 使用 ps aux 命令來查看,能以簡(jiǎn)單列表的形式顯示出進(jìn)程信息 ps aux 用于報(bào)告當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)??梢源钆鋕ill指令隨時(shí)中斷、刪除不必要的程序. ps 命令是最基本同時(shí)也是非常強(qiáng)大的進(jìn)程查看命令,使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)

    2024年02月02日
    瀏覽(33)
  • Linux網(wǎng)絡(luò)編程:多進(jìn)程 多線程_并發(fā)服務(wù)器

    文章目錄: 一:wrap常用函數(shù)封裝 wrap.h? wrap.c server.c封裝實(shí)現(xiàn) client.c封裝實(shí)現(xiàn) 二:多進(jìn)程process并發(fā)服務(wù)器 server.c服務(wù)器 實(shí)現(xiàn)思路 代碼邏輯? client.c客戶端 三:多線程thread并發(fā)服務(wù)器 server.c服務(wù)器 實(shí)現(xiàn)思路 代碼邏輯? client.c客戶端 ???? ??read 函數(shù)的返回值 wrap.h? wrap

    2024年02月12日
    瀏覽(31)
  • 基于linux下的高并發(fā)服務(wù)器開發(fā)(第二章)- 2.7 進(jìn)程退出、孤兒進(jìn)程、僵尸進(jìn)程

    基于linux下的高并發(fā)服務(wù)器開發(fā)(第二章)- 2.7 進(jìn)程退出、孤兒進(jìn)程、僵尸進(jìn)程

    ? 父進(jìn)程運(yùn)行結(jié)束,但子進(jìn)程還在運(yùn)行(未運(yùn)行結(jié)束),這樣的子進(jìn)程就稱為孤兒進(jìn)程 (Orphan Process)。 ? 每當(dāng)出現(xiàn)一個(gè)孤兒進(jìn)程的時(shí)候,內(nèi)核就把孤兒進(jìn)程的父進(jìn)程設(shè)置為 init ,而 init 進(jìn)程會(huì)循環(huán)地 wait() 它的已經(jīng)退出的子進(jìn)程。這樣,當(dāng)一個(gè)孤兒進(jìn)程凄涼地結(jié)束 了其生

    2024年02月16日
    瀏覽(24)
  • Linux本地部署1Panel服務(wù)器運(yùn)維管理面板并實(shí)現(xiàn)公網(wǎng)訪問

    Linux本地部署1Panel服務(wù)器運(yùn)維管理面板并實(shí)現(xiàn)公網(wǎng)訪問

    1Panel 是一個(gè)現(xiàn)代化、開源的 Linux 服務(wù)器運(yùn)維管理面板。高效管理,通過 Web 端輕松管理 Linux 服務(wù)器,包括主機(jī)監(jiān)控、文件管理、數(shù)據(jù)庫管理、容器管理等 下面我們介紹在Linux 本地安裝1Panel 并結(jié)合cpolar 內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問1Panel 管理界面 執(zhí)行如下命令一鍵安裝 1Panel: 安

    2024年02月04日
    瀏覽(107)
  • Linux服務(wù)器常見運(yùn)維性能測(cè)試(1)綜合跑分unixbench、superbench

    Linux服務(wù)器常見運(yùn)維性能測(cè)試(1)綜合跑分unixbench、superbench

    最近需要測(cè)試一批服務(wù)器的相關(guān)硬件性能,以及在常規(guī)環(huán)境下的硬件運(yùn)行穩(wěn)定情況,需要持續(xù)拷機(jī)測(cè)試穩(wěn)定性。所以找了一些測(cè)試用例。本次測(cè)試包括在服務(wù)器的高低溫下性能記錄及壓力測(cè)試,高低電壓下性能記錄及壓力測(cè)試,常規(guī)環(huán)境下CPU滿載穩(wěn)定運(yùn)行的功率記錄。 這個(gè)系

    2024年02月04日
    瀏覽(103)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包