用模板的方式创建守护进程代码实例_linux shell

复制代码 代码如下:

#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);
}

时间: 2024-08-01 06:48:15

用模板的方式创建守护进程代码实例_linux shell的相关文章

Shell、Perl、Python、PHP访问 MySQL 数据库代码实例_linux shell

下午写了一个简单的 bash 脚本,用来测试程序,输入一个测试用例文件,输出没有通过测试的用例和结果,然后把结果保存到数据库里.如何在 bash 脚本里直接访问数据库呢?既然在 shell 里可以直接用 mysql 命令操作数据库,那么在 shell script 里也应该可以通过调用 mysql 来操作数据库.比如用下面的 bash shell 脚本查询数据库: Bash 复制代码 代码如下: #!/bin/bash mysql -uvpsee -ppassword test << EOFM

linux 创建守护进程的相关知识_linux shell

创建子进程,父进程退出 这是编写守护进程的第一步.由于守护进程是脱离控制终端的,因此,完成第一步后就会在Shell终端里造成一程序已经运行完毕的假象.之后的所有工作都在子进程中完成,而用户在Shell终端里则可以执行其他命令,从而在形式上做到了与控制终端的脱离. 在Linux中父进程先于子进程退出会造成子进程成为孤儿进程,而每当系统发现一个孤儿进程是,就会自动由1号进程(init)收养它,这样,原先的子进程就会变成init进程的子进程. 在子进程中创建新会话 这个步骤是创建守护进程中最重要的一步

c#如何创建守护进程

问题描述 公司有一程序要保证其实可靠性,需用守护进程,如何实现?谢谢各位 解决方案 解决方案二:我也想知道,帮忙顶

Python守护进程用法实例分析

  本文实例讲述了Python守护进程用法.分享给大家供大家参考.具体分析如下: 守护进程是可以一直运行而不阻塞主程序退出.要标志一个守护进程,可以将Process实例的daemon属性设置为True.代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import os import time import random import sys from multiprocessing import Process,current_pr

浅谈Linux内核创建新进程的全过程_Linux

进程描述 进程描述符(task_struct) 用来描述进程的数据结构,可以理解为进程的属性.比如进程的状态.进程的标识(PID)等,都被封装在了进程描述符这个数据结构中,该数据结构被定义为task_struct 进程控制块(PCB) 是操作系统核心中一种数据结构,主要表示进程状态. 进程状态 fork() fork()在父.子进程各返回一次.在父进程中返回子进程的 pid,在子进程中返回0. fork一个子进程的代码   #include <stdio.h> #include <std

python实现的守护进程用法实例

  本文实例讲述了python实现的守护进程(Daemon)用法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 def createDaemon(): "'Funzione che crea un demone per eseguire un determinato programma-"' import os #

用shell脚本监控进程是否存在 不存在则启动的实例_linux shell

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/sh ps -fe|grep processString |grep -v grep if [ $? -ne 0 ] then echo "start process....." else echo "runing....." fi ##### processString 表示进程特征字符串,能够查询到唯一进程的特征字符串 0表示存在的 $? -ne 0 不存在,$? -eq 0 存

Shell脚本实现监视指定进程的运行状态_linux shell

在之前的博客中,曾经写了自动化测试程序的实现方法,现在开发者需要知道被测试的进程(在此指运行在LINUX上的主进程的)在异常退出之前的进程的运行状态,例如内存的使用率.CPU的使用率等. 现用shell脚本实现指定进程的运行状态.直接上代码. #!/bin/sh echo "`date`" echo "Start $0---------" echo "" #每十秒监视一下 sec=10 #取得指定进程名为mainAPP,内存的使用率,进程运行状态

unix编程创建前缀固定的临时文件代码分享_linux shell

参数:pathname,存储临时文件的路径文件名,需要手动free()掉.dir,临时文件的路径,如果TMPDIR环境变量不为空,则此参数被忽略,转而使用环境变量.pfx,临时文件名的前缀,只使用前5个字符.注:创建的临时文件需要手动unlink()掉. 创建临时文件的函数 复制代码 代码如下: int  Make_temp_file(char **pathname,const char *dir,const char *pfx){ char *ptr,*tmp; size_t len; int