注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Leo

笑:胸怀,傲:实力,才能笑傲江湖。

 
 
 

日志

 
 

守护进程的创建  

2016-01-06 16:18:46|  分类: 技术管理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天看了下进程的相关知识,看到创建进程和守护进程,这儿拷贝下百度的代码,作为一个笔记学习:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
#define MAXFILE 65535
void sigterm_handler(int arg);
volatile sig_atomic_t _running = 1;
int main()
{
pid_t pc,pid;
int i,fd,len,flag = 1;
char *buf="this is a Dameon\n";
len = strlen(buf);
pc = fork(); //第一步,创建子进程
if(pc<0){
printf("error fork\n");
exit(1);
}
else if(pc>0)
exit(0);//父进程一定要退出,免得会占用终端或者输出信息,在Shell终端造成程序已经运行完毕的假象。
pid = setsid(); //第二步在子进程中创建新会话,setsid函数能够使进程完全独立出来。
if (pid < 0) perror("setsid error");
chdir("/"); //第三步,改变当前目录为根目录。
umask(0); //第四步,重设文件权限掩码。
for(i=0;i<MAXFILE;i++) //第五步,关闭文件描述符。
close(i);
signal(SIGTERM, sigterm_handler);
while( _running )
{
if( flag ==1 &&(fd=open("/tmp/daemon.log",O_CREAT|O_WRONLY|O_APPEND,0600))<0)
{
perror("open");
flag=0;
exit(1);
}
write(fd,buf,len);
close(fd);
usleep(10*1000); //10毫秒
}
}
void sigterm_handler(int arg)
{
printf("kill it.\n");
_running = 0;
}
  评论这张
 
阅读(76)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017