用模板的方式创建守护进程代码实例
#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);
}
unix编程创建前缀固定的临时文件代码分享
参数:pathname,存储临时文件的路径文件名,需要手动free()掉。dir,临时文件的路径,如果TMPDIR环境变量不为空,则此参数被忽略,转而使用环境变量
linux shell脚本学习录制与回放终端会话
amosli@amosli-pc:~/learn$script-t2timing.log-aoutput.session#开始录制Scriptstarted,fileisoutput.sessionamosli@amosli-pc:~/learn$hello1Nocommand'hello1'found,didyoumean:Command'hello'frompackage'he
linux shell脚本学习xargs命令使用详解
例如,下面的命令:rm`find/path-typef`如果path目录下文件过多就会因为参数列表过长而报错无法执行。但改用xargs以后,问题即获解决。find/path-typef-print0|xa
编辑:一起学习网
标签:参数,进程,函数,临时文件,脚本