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

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

熱門標簽:地圖標注員都是年輕人 如果做線上地圖標注 河南信譽好的不封卡電話外呼系統(tǒng) 打電話機器人接我是他的秘書 客服外呼系統(tǒng)怎么樣 江蘇云電銷機器人公司 百度地圖標注錯了有責任嗎 華鋒e路航港口地圖標注 揭陽智能電話機器人推薦

復制代碼 代碼如下:

#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í)行一次

標簽:婁底 邵陽 許昌 赤峰 淘寶邀評 金昌 巴彥淖爾 馬鞍山

巨人網(wǎng)絡(luò)通訊聲明:本文標題《用模板的方式創(chuàng)建守護進程代碼實例》,本文關(guān)鍵詞  用,模板,的,方式,創(chuàng)建,守護,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用模板的方式創(chuàng)建守護進程代碼實例》相關(guān)的同類信息!
  • 本頁收集關(guān)于用模板的方式創(chuàng)建守護進程代碼實例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章