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

首頁 > 開發 > Linux Shell > 正文

用模板的方式創建守護進程代碼實例

2020-07-27 19:20:31
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

#include "wrap.h"
#define MYDOMAIN_FLAG "/tmp/.mydomain_log"

void domain_end(){
 Unlink(MYDOMAIN_FLAG);
}

int domain_init(){
 int fd;
 fd=open(MYDOMAIN_FLAG,O_RDWR|O_CREAT|O_EXCL|O_APPEND,0600);
 if(fd==-1)
  err_sys(errno,"domain faild, %s",MYDOMAIN_FLAG);
 Dup2(fd,1);
 Dup2(fd,2);
 return fd;
}
/*
功能:
 work函數為我們的工作函數,他的返回值,會被init()系統進程收集作為守護的退出碼
參數:
 argc,argv均為入口函數main()的參數副本。
*/
int work(int argc,char **argv){
 while(1){
  sleep(60);
  err_msg("one loop....");
 }
 return 0;
}
int start_domain(int argc,char **argv,int (*work)(int argc,char **argv)){
 pid_t pid;
 int  fd,ecode;
 fd=domain_init();
 if(Fork()==0){
  if(Fork()==0){
   Atexit(domain_end);
   err_msg("domain has ran sucessfully....");
   /*如果work()的返回時間比其父進程調用exit(0)的時間早,將不會被init()進程領養。以后我們會用管道的特點來同步父子進程。*/
   ecode=work(argc,argv);
   exit(ecode);
  }
  exit(0);
 }
 Wait(NULL);
 return 0;
}
int main(int argc,char **argv){
 return start_domain(argc,argv,work);
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修文县| 怀仁县| 丹棱县| 高唐县| 疏附县| 出国| 南和县| 赤水市| 西充县| 大兴区| 南陵县| 东乡县| 宣汉县| 措勤县| 郸城县| 临清市| 恭城| 息烽县| 沈丘县| 司法| 许昌市| 北辰区| 三亚市| 马公市| 吉林市| 荃湾区| 上高县| 商河县| 绥化市| 固始县| 安化县| 夹江县| 涪陵区| 凤凰县| 库尔勒市| 容城县| 嘉鱼县| 西昌市| 腾冲县| 甘孜| 西乌珠穆沁旗|