亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Unix > 正文

《Unix環(huán)境高級編程》讀書筆記 第13章-守護進程

2024-06-28 13:24:23
字體:
供稿:網(wǎng)友
《Unix環(huán)境高級編程》讀書筆記 第13章-守護進程1. 引言
  • 守護進程是生存期長的一種進程。它們常常在系統(tǒng)引導(dǎo)裝入時啟動,僅在系統(tǒng)關(guān)閉時才終止。它們沒有控制終端,在后臺運行。
  • 本章說明守護進程結(jié)構(gòu)、如何編寫守護進程程序、守護進程如何報告出錯情況。
2. 守護進程的特征
  • 基于BSD的系統(tǒng)下執(zhí)行:ps -axj

    -a 顯示由其他用戶所擁有的進程的狀態(tài);-x 顯示沒有控制終端的進程狀態(tài);-j 顯示與作業(yè)有關(guān)的信息

  • 基于System V的系統(tǒng)下執(zhí)行:ps -efj
  • linux下執(zhí)行以上兩個命令輸出一致
  • 常見的守護進程:
  • kswapd,內(nèi)存換頁守護進程。
  • flush守護進程在可用內(nèi)存達到設(shè)置的最小閥值時將臟頁面沖洗至磁盤。
  • sync_supers守護進程定期將文件系統(tǒng)元數(shù)據(jù)沖洗至磁盤。
  • jbd守護進程幫助實現(xiàn)了ext4文件系統(tǒng)中的日志功能。
  • rpcbind守護進程提供了將遠程過程調(diào)用程序號映射為網(wǎng)絡(luò)端口號的服務(wù)。
  • rsyslogd守護進程可以被由管理員啟用的將系統(tǒng)消息記入日志的任何程序使用。
  • inetd守護進程。超級因特網(wǎng)服務(wù)進程。
  • crond守護進程在定期安排的日期和時間執(zhí)行命令。
  • atd守護進程,允許用戶在指定的時間執(zhí)行任務(wù),但是每個任務(wù)只執(zhí)行一次。
  • sshd守護進程提供了安全的遠程登錄和執(zhí)行設(shè)施。
  • cuPSD守護進程,打印假脫機進程,處理對系統(tǒng)提出的各個打印請求。
3. 編程規(guī)則
  • 在編寫守護進程程序時需遵循一些基本規(guī)則,以防止產(chǎn)生不必要的交互作用。
    1. 調(diào)用umask將文件模式創(chuàng)建屏蔽字設(shè)置為一個已知值(通常為0)。
    2. 調(diào)用fork,然后使父進程exit。因為:第一,如果守護進程是通過shell啟動的,這可以讓shell認為這條命令已經(jīng)執(zhí)行完畢;第二,子進程繼承了父進程的進程組ID,但獲得一個新的進程ID,這保證了子進程不是一個進程組的組長進程。這是setsid的先決條件。
    3. 調(diào)用setsid創(chuàng)建一個新會話。使調(diào)用進程:a. 成為新會話的首進程;b. 成為一個新進程組的組長進程;c. 沒有控制終端
    4. 將當(dāng)期工作目錄更改為根目錄,以免占有某文件系統(tǒng),使得其不能被卸載。或者,某寫守護進程還可能把當(dāng)前工作目錄更改到某個指定位置。
    5. 關(guān)閉不再需要的文件描述符。使守護進程不再持有從其父進程繼承來的任何文件描述符??梢允褂胦pen_max函數(shù)或getrlimit函數(shù)來判定最高文件描述符的值,并關(guān)閉直到該值的所有描述符。
    6. 某些守護進程打開/dev/null使其具有文件描述符0、1、2 。這樣,任何一個試圖讀標(biāo)準輸入、寫標(biāo)準輸出或標(biāo)準錯誤的庫例程都不會產(chǎn)生任何效果。
#include "apue.h"#include <syslog.h>#include <fcntl.h>#include <sys/resource.h>void daemonize(const char *cmd){  int i, fd0, fd1, fd2;  pid_t pid;  struct rlimit rl;  struct sigaction sa; /** Clear file creation mask.*/  umask(0); /** Get maximum number of file descriptors.*/  if (getrlimit(RLIMIT_NOFILE, &rl) < 0)    err_quit("%s: can’t get file limit", cmd); /** Become a session leader to lose controlling TTY.*/  if ((pid = fork()) < 0)    err_quit("%s: can’t fork", cmd);  else if (pid != 0) /* parent */    exit(0);  setsid(); /** Ensure future opens won’t allocate controlling TTYs.*/  sa.sa_handler = SIG_IGN;  sigemptyset(&sa.sa_mask);  sa.sa_flags = 0;  if (sigaction(SIGHUP, &sa, NULL) < 0)    err_quit("%s: can’t ignore SIGHUP", cmd);  if ((pid = fork()) < 0)    err_quit("%s: can’t fork", cmd);  else if (pid != 0) /* parent */    exit(0); /** Change the current working directory to the root so* we won’t PRevent file systems from being unmounted.*/  if (chdir("/") < 0)    err_quit("%s: can’t change directory to /", cmd); /** Close all open file descriptors.*/  if (rl.rlim_max == RLIM_INFINITY)    rl.rlim_max = 1024;  for (i = 0; i < rl.rlim_max; i++)    close(i); /** Attach file descriptors 0, 1, and 2 to /dev/null.*/  fd0 = open("/dev/null", O_RDWR);  fd1 = dup(0);  fd2 = dup(0); /** Initialize the log file.*/  openlog(cmd, LOG_CONS, LOG_DAEMON);  if (fd0 != 0 || fd1 != 1 || fd2 != 2) {    syslog(LOG_ERR, "unexpected file descriptors %d %d %d", fd0, fd1, fd2);  exit(1);  }}
4. 出錯記錄

  • 有以下3種產(chǎn)生日志消息的方法:
    1. 內(nèi)核例程可以調(diào)用log函數(shù)。
    2. 大多數(shù)用戶進程(守護進程)調(diào)用syslog函數(shù)來產(chǎn)生日志消息。
    3. 無論一個用戶進程是在此主機上,還是在通過TCP/IP網(wǎng)絡(luò)連接到此主機的其他主機上,都可將日志消息發(fā)送到UDP端口514 。
#include <syslog.h>void openlog(const char *ident, int option, int facility);void syslog(int priority, const char *format, ...);void closelog(void);int setlogmask(int maskpri); Returns: previous log priority mask value5. 單實例守護進程
  • 為了正常運作,某些守護進程會實現(xiàn)為,在任一時刻只運行該守護進程的一個副本。
  • 文件和記錄鎖機制提供了一種保證一個守護進程只有一個副本在運行的方法。
#include <unistd.h>#include <stdlib.h>#include <fcntl.h>#include <syslog.h>#include <string.h>#include <errno.h>#include <stdio.h>#include <sys/stat.h>#define LOCKFILE "/var/run/daemon.pid"#define LOCKMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)extern int lockfile(int); int already_running(void){  int fd;  char buf[16];  fd = open(LOCKFILE, O_RDWR|O_CREAT, LOCKMODE);  if (fd < 0) {    syslog(LOG_ERR, "can’t open %s: %s", LOCKFILE, strerror(errno));    exit(1);  }  if (lockfile(fd) < 0) {    if (errno == EACCES || errno == EAGAIN) {      close(fd);      return(1);    }    syslog(LOG_ERR, "can’t lock %s: %s", LOCKFILE, strerror(errno));    exit(1);  }  ftruncate(fd, 0);  sprintf(buf, "%ld", (long)getpid());  write(fd, buf, strlen(buf)+1);  return(0);}
6. 守護進程的慣例
  • 在Unix系統(tǒng)中,守護進程遵循以下通用慣例:
    1. 若守護進程使用鎖文件,那么該文件通常存儲在/var/run目錄中。守護進程可能需要具有超級用戶權(quán)限才能在此目錄中創(chuàng)建文件。鎖文件的名字通常是name.pid。
    2. 若守護進程支持配置選項,那么配置文件通常存放在/etc目錄中。配置文件的名字通常是name.conf。
    3. 守護進程可用命令行啟動,但通常它們是由系統(tǒng)初始化腳本之一啟動的。
    4. 某些守護進程捕捉SIGHUP信號,當(dāng)它們接收到該信號時,重新讀配置文件。
7. 客戶進程-服務(wù)器進程模型
  • 守護進程常常用作服務(wù)器進程。
  • 一般而言,服務(wù)器進程等待客戶進程與其聯(lián)系,提出某種類型的服務(wù)要求。
  • 在服務(wù)器進程中調(diào)用fork然后exec另一個程序來項客戶進程提供服務(wù)是很常見的。服務(wù)器進程通常管理著多個文件描述符:通信端點、配置文件、日志文件和類似的文件。為保證安全,可設(shè)置所有對于被執(zhí)行程序不需要的文件描述符的執(zhí)行關(guān)閉標(biāo)志close-on-exec。原創(chuàng)文章,轉(zhuǎn)載請聲明出處:http://www.CUOXin.com/DayByDay/p/3948402.html

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
91福利在线免费观看| 在线不卡日本| 国产黄色免费网| 日韩女同强女同hd| 欧美一a一片一级一片| 在线看日韩精品电影| www.三级.com| 人妻少妇精品无码专区二区| 中文字幕理论片| 欧美电影一区二区| 欧美国产精品va在线观看| 欧美成年人视频在线观看| 黄色国产一级视频| 电影eeuss影院www| 亚洲综合五月天| 亚洲精品免费在线看| 亚洲激情午夜| 欧美第一页浮力影院| 国产精品久久久久久久久久ktv| 欧美成人a交片免费看| 四虎www视频| 无码人妻av免费一区二区三区| 日韩中文字幕组| 日韩欧美亚洲视频| 国产三区二区一区久久| 日韩三级av在线播放| 中文字幕人妻一区二区在线视频| 久草视频一区二区| 欧美精品18videosex性欧美| 亚洲理论电影网| 天堂www中文在线资源| 人人干人人视频| 久久精品国亚洲| av一区在线观看| 中文字幕日韩国产| 五月天av在线| 国产亚洲欧洲997久久综合| 一个人看的www片免费高清视频| 日韩 欧美 自拍| 欧美激情中文字幕一区二区| 久久精品久久久久| 香蕉视频免费在线| 91超碰中文字幕久久精品| 免费看黄视频网站| 日日骚一区二区三区| 欧美成人精品| 男男视频在线观看网站| 欧美在线免费视频| 国产夜色精品一区二区av| 一级片免费网址| 99视频日韩| 欧美三级 欧美一级| 性爱在线免费视频| 香蕉乱码成人久久天堂爱免费| 国产欧美日韩精品丝袜高跟鞋| 日韩大陆欧美高清视频区| 国产精品久久久久久av福利| 欧美日韩少妇| 亚洲欧洲国产日本综合| 国产精品国产亚洲精品看不卡| 精品人伦一区二区| 欧美xxx另类| 91av国产在线| 欧美日韩综合视频网址| 日本视频网址| 99精品视频在线免费观看| 国产精品伦一区二区三区级视频频| 一区二区三区欧美日| 欧美国产专区| 国产精品影视在线| 视频在线观看入口黄最新永久免费国产| 国产日产高清欧美一区二区三区| 亚洲一区色图| 一区二区毛片| 999精品一区| 91成人噜噜噜在线播放| 中文日韩电影网站| 影音先锋电影在线观看| 女人在下体塞跳蛋在线观看| 2018av在线| 日韩av网站导航| 欧美国产精品劲爆| 国产.欧美.日韩| 国产精品magnet| 亚洲乱码国产乱码精品精的特点| 99国产精品99| 可以看美女隐私的网站| 成人黄色免费短视频| 中文字幕求饶的少妇| 久久综合成人网| 欧美在线视频你懂得| 男人的天堂亚洲在线| 久久免费视频播放| 日韩精品免费在线| 手机在线看福利| 成人永久免费视频| 欧美一级视频一区二区| 在线免费看a| 久久精品国产屋| 欧美国内亚洲| 亚洲精品suv精品一区二区| 亚洲精品乱码久久久久久黑人| 亚洲全部视频| 性一爱一乱一交一视频| 欧美壮男野外gaytube| 九九精品视频在线观看九九| 99久久免费精品国产免费| 亚洲草草视频| 中文字幕综合在线| 丝袜a∨在线一区二区三区不卡| 91精品视频在线播放| 亚洲高清免费观看高清完整版在线观看| a视频在线观看免费| 毛片a片免费观看| 日韩免费小视频| 一区二区免费| 国产成人精彩在线视频九色| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 国产精品特级毛片一区二区三区| 欧美日韩你懂的| 污视频免费在线看| 天堂网免费视频| 日韩精品一区二区三区电影| 欧美jizzhd欧美| 国产乱子精品一区二区在线观看| 亚洲制服中文字幕| 精品久久视频| 农村少妇一区二区三区四区五区| 久久亚洲精华国产精华液| 视频一区二区三区国产| 欧美日韩一级黄色片| 亚洲女人天堂| 欧美h版电影| 亚洲毛片av在线| 国产小视频福利在线| 日本不卡一区在线| 国产福利av网站| 高清一级毛片视频| 国产精品高清网站| 日本在线视频www鲁啊鲁| 777免费视频| 三级黄色免费观看| 精品少妇爆乳无码av无码专区| 久久国产精品高清一区二区三区| 亚洲精品二区| 亚洲手机成人高清视频| 在线欧美日韩| 亚洲一线在线观看| 久久麻豆精品| 日韩精品福利视频| 国产日韩欧美精品一区二区三区| 国产精品99无码一区二区| 日韩av免费观影| 成人精品中文字幕| 日本成本人片免费观看| 成人情趣视频网站| jizz18日本| 欧美成人精品欧美一级乱| 欧美在线一级视频| 大片免费在线看视频| 久久国产精品视频在线观看| h视频免费在线| 日韩一区av| 免费观看日韩电影| 成人免费福利片| 国产精品一区二区三区在线| 激情成人综合| 麻豆国产一区二区| 日本一本二本在线观看| av大片在线免费观看| 午夜男人视频在线观看| 欧美亚洲精品天堂| 欧美精品一区二区三区视频| 日韩国产小视频| 加勒比av在线播放| 欧美成熟毛茸茸| 国产区在线观看| 久久99久国产精品黄毛片色诱| 久久久久久久久久久一区| 老女人性生活视频| 日韩久久久久久久久久久久久| 日韩欧美在线视频观看| 中文字幕在线观看一区二区| 日韩乱码一区二区三区| av片哪里在线观看| 久久综合伊人77777蜜臀| 日本少妇高清视频| 国产剧情在线观看一区二区| 国内不卡的二区三区中文字幕| 亚洲精品在线播放| 国产一级18片视频| 一本本久综合久久爱| 国产精品丝袜白浆摸在线| 国产91av视频在线观看| 欧美大尺度做爰床戏| 美女视频黄久久| wwwww在线观看免费视频| 午夜精品久久久久久久无码| 久久99免费视频| 色综合久久久888| 成人精品国产福利| 日本韩国欧美三级| 男人的天堂av社区在线| 国产清纯美女被跳蛋高潮一区二区久久w| 国产色产综合产在线视频| 一区二区精品国产| 欧美性jizz18性欧美| 激情av综合网| 精品无人区卡一卡二卡三乱码免费卡| 久久99久久久久久| 成人午夜激情在线| 日韩成人中文字幕在线观看| 亚洲免费伊人电影在线观看av| 91国内视频| 少妇高潮在线观看| 亚洲色图第三页| 国产日韩欧美a| 亚洲男子天堂网| 国产探花一区二区三区| 亚洲综合男人的天堂| 亚洲码无人客一区二区三区| 国产乱码精品一区二区三| 性欧美18~19sex高清播放| 久久一日本道色综合久久| 亚洲国产综合久久| 国产 日韩 欧美 精品| 成人在线观看小视频| 三级欧美在线一区| 97影视在线观看| 亚洲乱码一区av黑人高潮| 美女精品一区最新中文字幕一区二区三区| 亚洲天堂一区| 国产精品视频中文字幕| 欧美另类极品| 国内精品久久久久久久影视麻豆| 国产精品久久国产精麻豆99网站| 婷婷综合社区| 五月天视频在线观看| 一区二区三区在线视频免费观看| 久久av喷吹av高潮av| 中文字幕日韩综合av| 人人狠狠综合久久亚洲婷婷| 视频区小说区图片区| 中文字幕在线乱| 亚洲精品在线不卡| 日韩一区二区免费在线电影| 2018狠狠干| 国产精品久久久久7777| 欧美三级网色| 国产精品精品软件视频| 免费看片91| 国产一级18片视频| 亚洲.国产.中文慕字在线| 国产精品乱子久久久久| 在线日韩av永久免费观看| 视频免费一区| 国产成人在线播放视频| 麻豆精品免费视频| 亚洲小说欧美另类婷婷| 1024国产在线| 51精品国产人成在线观看| 1024精品一区二区三区| 麻豆精品一区二区| 欧美色综合影院| 黄色小视频在线观看| 精品中文字幕一区二区小辣椒| 国产激情视频在线看| 夜夜嗨av一区二区三区中文字幕| 亚洲视频免费一区| 欧美超级乱淫片喷水| 青青视频在线免费观看| 黄色一级视频免费看| 欧美乱大交xxxxx潮喷l头像| 波多野结衣办公室33分钟| 国产一区二区三区精品欧美日韩一区二区三区| 2018日韩中文字幕| 一二三四视频在线中文| 国产在线观看91精品一区| 欧美日韩国产高清一区| 青青草华人在线视频| 少妇久久久久久久久久| 精品国产精品| 日韩欧美精品综合| 日本一区不卡| 好了av在线| 91嫩草国产线观看亚洲一区二区| 黑人精品一区| 日韩精品视频久久| 中文字幕一区二区在线观看视频| 国产xxx在线| 欧美一级日韩不卡播放免费| 在线观看日韩毛片| 高清一区二区三区日本久| 亚洲精品久久久久久一区二区| 亚洲欧美日韩综合一区| 精品免费视频一卡2卡三卡4卡不卡| 欧美特黄视频| 成人福利视频导航| 男女一区二区三区免费| 中文字幕日韩精品一区| 国产精品视频在线看| av在线天天| 日本a级黄色| 青青草av专区| 精品国产精品国产偷麻豆| 高清不卡一二三区| 日一区二区三区| 久久久人成影片一区二区三区| 亚洲成国产人片在线观看| 欧美禁忌电影网| 波多野结衣中文一区| 精品国产乱码久久久久久浪潮| 亚洲色图在线看| 精品国产va久久久久久久| 久久九九久精品国产免费直播| 精品国产一区二区三区在线| 亚洲免费激情| 在线免费观看日韩视频| 国产精品久久久久久久成人午夜| 久久午夜无码鲁丝片| 天天干天天av| 黄色福利在线观看| 网红女主播少妇精品视频| 成年免费插网| 少妇免费毛片久久久久久久久| 国产a√精品区二区三区四区| 日本一区二区三区高清不卡| 91蜜桃视频在线|