国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Web服務器 > 正文

linux下如何創(chuàng)建守護進程的步驟

2024-09-01 13:52:28
字體:
來源:轉載
供稿:網(wǎng)友

這兩天學習了linux/193777.html">linux 守護進程這個地方知識點挺多的,而且很重要,所以,今天添加一點小筆記。

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

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

2,進程的類型:交互進程,批處理進程,守護進程 

3,守護進程:Linux中的后臺服務進程,daemon進程 

4,守護進程的創(chuàng)建步驟: 

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

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

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

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

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

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

(4)重新設置文件權限掩碼。 

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

(5)關閉文件描述符。 

子進程從父進程那里繼承了打開文件描述符。所以使用close即可關閉。 

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

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

具體的代碼如下,守護進程的功能寫的較為簡單,往文件里寫東西: 

#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)建子進程 ,父進程退出  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");       //重設文件掩碼      umask(0);      //關閉文件描述符      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;}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 万年县| 巴林左旗| 广德县| 寿光市| 和静县| 淮南市| 嘉善县| 文成县| 乌兰县| 察雅县| 周至县| 栖霞市| 图片| 浙江省| 盈江县| 阜宁县| 靖州| 枣庄市| 安岳县| 尼勒克县| 罗源县| 临泽县| 友谊县| 惠安县| 牡丹江市| 绥芬河市| 彭阳县| 遂平县| 额尔古纳市| 禹州市| 太仓市| 宜良县| 汕尾市| 灵寿县| 梧州市| 定日县| 东海县| 尼玛县| 本溪市| 玉林市| 五峰|