主頁 > 知識庫 > 用模板的方式創(chuàng)建守護進程代碼實例

用模板的方式創(chuàng)建守護進程代碼實例

熱門標(biāo)簽:呼叫中心市場需求 AI電銷 鐵路電話系統(tǒng) 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化 百度競價排名 服務(wù)外包 Linux服務(wù)器

復(fù)制代碼 代碼如下:

#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函數(shù)為我們的工作函數(shù),他的返回值,會被init()系統(tǒng)進程收集作為守護的退出碼
參數(shù):
 argc,argv均為入口函數(shù)main()的參數(shù)副本。
*/
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()的返回時間比其父進程調(diào)用exit(0)的時間早,將不會被init()進程領(lǐng)養(yǎng)。以后我們會用管道的特點來同步父子進程。*/
   ecode=work(argc,argv);
   exit(ecode);
  }
  exit(0);
 }
 Wait(NULL);
 return 0;
}
int main(int argc,char **argv){
 return start_domain(argc,argv,work);
}

您可能感興趣的文章:
  • shell腳本作為保證PHP腳本不掛掉的守護進程實例分享
  • PHP實現(xiàn)多進程并行操作的詳解(可做守護進程)
  • PHP程序級守護進程的實現(xiàn)與優(yōu)化的使用概述
  • php守護進程 加linux命令nohup實現(xiàn)任務(wù)每秒執(zhí)行一次

標(biāo)簽:仙桃 蘭州 湘潭 衡水 黃山 湖南 崇左 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用模板的方式創(chuàng)建守護進程代碼實例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266