人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

linux下如何創(chuàng)建守護(hù)進(jìn)程的步驟

發(fā)布日期:2022-06-14 12:47 | 文章來源:站長之家

這兩天學(xué)習(xí)了linux 守護(hù)進(jìn)程這個地方知識點(diǎn)挺多的,而且很重要,所以,今天添加一點(diǎn)小筆記。

1,進(jìn)程的概念:程序的一次動態(tài)執(zhí)行過程。

進(jìn)程存在于內(nèi)存當(dāng)中,存在著 創(chuàng)建,調(diào)度,執(zhí)行和消亡,進(jìn)程號是進(jìn)程的唯一標(biāo)志,每一個進(jìn)程都有自己獨(dú)立的內(nèi)存空間,在32位操作系統(tǒng)中,進(jìn)程擁有0-4G的內(nèi)存空間,其中0-3G屬于用戶,3G-4G屬于內(nèi)核,所以就出現(xiàn)了進(jìn)程的執(zhí)行模式:用戶模式和內(nèi)核模式。

2,進(jìn)程的類型:交互進(jìn)程,批處理進(jìn)程,守護(hù)進(jìn)程

3,守護(hù)進(jìn)程:Linux中的后臺服務(wù)進(jìn)程,daemon進(jìn)程

4,守護(hù)進(jìn)程的創(chuàng)建步驟:

(1)創(chuàng)建子進(jìn)程,父進(jìn)程退出。

經(jīng)過這步以后,子進(jìn)程就會成為孤兒進(jìn)程(父進(jìn)程先于子進(jìn)程退出, 此時的子進(jìn)程,成為孤兒進(jìn)程,會被init進(jìn)程收養(yǎng))。使用fork()函數(shù),如果返回值大于0,表示為父進(jìn)程,exit(0),父進(jìn)程退出,子進(jìn)程繼續(xù)。

(2)在子進(jìn)程中創(chuàng)建新會話,使當(dāng)前進(jìn)程成為新會話組的組長。

使用setsid()函數(shù),如果當(dāng)前進(jìn)程不是進(jìn)程組的組長,則為當(dāng)前進(jìn)程創(chuàng)建一個新的會話期,使當(dāng)前進(jìn)程成為這個會話組的首進(jìn)程,成為這個進(jìn)程組的組長。

(3)改變當(dāng)前目錄為根目錄。

由于守護(hù)進(jìn)程在后臺運(yùn)行,開始于系統(tǒng)開啟,終止于系統(tǒng)關(guān)閉,所以要將其目錄改為系統(tǒng)的根目錄下。進(jìn)程在執(zhí)行時,其文件系統(tǒng)不能被卸下。

(4)重新設(shè)置文件權(quán)限掩碼。

進(jìn)程從父進(jìn)程那里繼承了文件創(chuàng)建掩碼,所以可能會修改守護(hù)進(jìn)程存取權(quán)限位,所以要將文件創(chuàng)建掩碼清除,umask(0);

(5)關(guān)閉文件描述符。

子進(jìn)程從父進(jìn)程那里繼承了打開文件描述符。所以使用close即可關(guān)閉。

在這里要用到getdtablesize()函數(shù)得到這個進(jìn)程打開文件的數(shù)目。

按照上面的步驟即可完成守護(hù)進(jìn)程的創(chuàng)建。

具體的代碼如下,守護(hù)進(jìn)程的功能寫的較為簡單,往文件里寫東西:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <stdlib.h>
int main()
{   // 1創(chuàng)建子進(jìn)程 ,父進(jìn)程退出
  pid_t pid = fork();
  if(pid<0)
  {
   perror("fork error");
   return -1;
  }
  else if(pid>0)
  {
   exit(0);
  }
  else
  {
    while(1)
    {
      //2 組長
      setsid();
      // 改變路徑至根目錄
      chdir("/tmp"); 
      //重設(shè)文件掩碼
      umask(0);
      //關(guān)閉文件描述符
      int des=getdtablesize();
      int i=0;
      for(i=0;i<des;i++)
      {
        close(i);
      }
    } 
    char buf[]="bat xld come!\n";
    int fd=open("xld.txt",O_WRONLY|O_CREAT |O_APPEND,0666);
     write(fd,buf,sizeof(buf));
     sleep(2);
    }
  return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持本站。

美國服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部