最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++如何采用Daemon進(jìn)行后臺(tái)程序的部署

 更新時(shí)間:2023年04月28日 10:40:39   作者:NUS_Ryan  
這篇文章主要介紹了C++采用Daemon進(jìn)行后臺(tái)程序的部署,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、如何采用Daemon進(jìn)行后臺(tái)程序的部署

在C++中,如果要讓一個(gè)程序一直在后臺(tái)運(yùn)行并且和終端會(huì)話分離,我們可以將其作為守護(hù)進(jìn)程運(yùn)行,以下是創(chuàng)建C++守護(hù)進(jìn)程的一般步驟。

1. 創(chuàng)建子進(jìn)程

通過(guò)調(diào)用fork()函數(shù)創(chuàng)建一個(gè)子進(jìn)程。這將產(chǎn)生一個(gè)新的進(jìn)程,該進(jìn)程是原始進(jìn)程的副本。父進(jìn)程和子進(jìn)程從fork()函數(shù)的返回值處開始執(zhí)行。對(duì)于子進(jìn)程,fork()返回0,對(duì)于父進(jìn)程,fork()返回子進(jìn)程的進(jìn)程id

2. 終止父進(jìn)程

在父進(jìn)程中,使用exit()函數(shù)使得其正常退出。這樣做是為了讓子進(jìn)程成為孤兒進(jìn)程進(jìn)而被init進(jìn)程(進(jìn)程ID為1)接管,并且脫離原來(lái)的會(huì)話。

3. 創(chuàng)建新的會(huì)話

在子進(jìn)程中,調(diào)用setsid()函數(shù)創(chuàng)建一個(gè)新的會(huì)話,這將使得子進(jìn)程成為新會(huì)話的領(lǐng)導(dǎo)進(jìn)程,并且擺脫原來(lái)的控制終端。

4. 改變當(dāng)前工作目錄

使用chdir()函數(shù)來(lái)創(chuàng)建一個(gè)新的會(huì)話,這將使得子進(jìn)程成為新會(huì)話的領(lǐng)導(dǎo)進(jìn)程,同時(shí)擺脫原來(lái)的控制終端。

5. 重設(shè)文件權(quán)限掩碼

通過(guò)調(diào)用unmask()函數(shù)設(shè)置一個(gè)合適的文件權(quán)限,確保守護(hù)進(jìn)程創(chuàng)建的文件具有合適的權(quán)限。

6.關(guān)閉不需要的文件描述

守護(hù)進(jìn)程通常不需要和用戶交互,因此你可以關(guān)閉不需要的文件描述符,如標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸入和錯(cuò)誤文件描述符

二. 代碼示例

#include<iostream>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<cstdlib>
using namespace std; //不推薦使用這種寫法,但是這里我為了省事就直接這樣寫了
int main(){
pid_t pid = fork();
if(pid < 0){
  cerr<<"Error : Fork Failed!"<<endl;
  exit(1);
}
if(pid > 0){
  //Father 
  exit(0);
}
if(setsid() < 0){
  cerr <<"Error : Setsid Failed"<<endl;
  exit(1);
}
unmask(0);
chdir("/");
//close unnecessary file description
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
while(true){
  //daemon logic;
  sleep(5);
  }
return 0;
}

到此這篇關(guān)于C++采用Daemon進(jìn)行后臺(tái)程序的部署的文章就介紹到這了,更多相關(guān)C++后臺(tái)程序的部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入剖析OpenMP鎖的原理與實(shí)現(xiàn)

    深入剖析OpenMP鎖的原理與實(shí)現(xiàn)

    在本篇文章當(dāng)中主要給大家介紹一下?OpenMP?當(dāng)中經(jīng)常使用到的鎖并且仔細(xì)分析它其中的內(nèi)部原理!文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-01-01
  • Qt數(shù)據(jù)庫(kù)應(yīng)用之實(shí)現(xiàn)通用數(shù)據(jù)庫(kù)請(qǐng)求

    Qt數(shù)據(jù)庫(kù)應(yīng)用之實(shí)現(xiàn)通用數(shù)據(jù)庫(kù)請(qǐng)求

    這篇文章主要為大家介紹了Qt中是如何實(shí)現(xiàn)通用數(shù)據(jù)庫(kù)請(qǐng)求的,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定幫助,感興趣的小伙伴可以了解一下
    2022-03-03
  • c++素?cái)?shù)篩選法

    c++素?cái)?shù)篩選法

    本文講的是篩選法的C++實(shí)現(xiàn), 篩選法又稱篩法,是求不超過(guò)自然數(shù)N(N&gt;1)的所有質(zhì)數(shù)的一種方法。據(jù)說(shuō)是古希臘的埃拉托斯特尼(Eratosthenes,約公元前274~194年)發(fā)明的,又稱埃拉托斯特尼篩子。
    2017-05-05
  • C++中l(wèi)ist的使用方法及常用list操作總結(jié)

    C++中l(wèi)ist的使用方法及常用list操作總結(jié)

    這篇文章主要介紹了C++中l(wèi)ist的使用方法及常用list操作總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C/C++細(xì)數(shù)宏與函數(shù)有那些區(qū)別

    C/C++細(xì)數(shù)宏與函數(shù)有那些區(qū)別

    在C程序中,可以用宏代碼提高執(zhí)行效率。宏代碼本身不是函數(shù),但使用起來(lái)象函數(shù)。預(yù)處理器用復(fù)制宏代碼的方式代替函數(shù)調(diào)用,省去了參數(shù)壓棧、生成匯編語(yǔ)言的CALL調(diào)用、返回參數(shù)、執(zhí)行return等過(guò)程,從而提高了速度
    2022-10-10
  • Qt 儀表盤的實(shí)現(xiàn)示例

    Qt 儀表盤的實(shí)現(xiàn)示例

    儀表盤在很多汽車和物聯(lián)網(wǎng)相關(guān)的系統(tǒng)中很常用,本文就來(lái)介紹一下Qt 儀表盤的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 詳解C++編程中的析構(gòu)函數(shù)

    詳解C++編程中的析構(gòu)函數(shù)

    這篇文章主要介紹了C++編程中的析構(gòu)函數(shù),是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C語(yǔ)言詳細(xì)講解const的用法

    C語(yǔ)言詳細(xì)講解const的用法

    今天探討const,首先來(lái)說(shuō)是將變量常量化。為什么要將變量常量化,原因有諸多好處有諸多。比如可以使數(shù)據(jù)更加安全不會(huì)被修改
    2022-05-05
  • Matlab 數(shù)字圖像的濾波及邊緣檢測(cè)

    Matlab 數(shù)字圖像的濾波及邊緣檢測(cè)

    本文運(yùn)用文字、代碼以及示例詳細(xì)介紹了數(shù)字圖像的濾波以及圖像的邊緣檢測(cè),需要的朋友可以自己了解一下
    2021-08-08
  • C語(yǔ)言用數(shù)組實(shí)現(xiàn)反彈球消磚塊

    C語(yǔ)言用數(shù)組實(shí)現(xiàn)反彈球消磚塊

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言用數(shù)組實(shí)現(xiàn)反彈球消磚塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論

兴和县| 新竹县| 高唐县| 盈江县| 广昌县| 班玛县| 清原| 陆河县| 黔东| 司法| 偃师市| 旬邑县| 大港区| 湾仔区| 应城市| 雷州市| 独山县| 芦溪县| 内乡县| 雅江县| 隆昌县| 卢湾区| 乾安县| 大竹县| 修水县| 循化| 松滋市| 司法| 南平市| 商丘市| 界首市| 永福县| 彭山县| 阜城县| 额尔古纳市| 阿克陶县| 大邑县| 德惠市| 迁安市| 化德县| 慈溪市|