守护进程daemon.c

它的特点是:
不占用控制终端(后台运行)
独立于控制终端
周期性运行

 

#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>


int main()
{
pid_t pid;
int fd;
int i,fd,flag=1;
char *buf="i am a daemon\n";
//1创建子进程

pid=fork();


if(pid<0)
{
printf("creat failed\n");

}
if(pid>0)
exit(0);


//2脱离控制终端 //执行到此的只能是子进程,pid》0的父进程已经退出
setsid();

//3.1改变工作目录
chdir("/");

//3.2清楚掩码
umask(0);

//3.3关闭打开的文件
for(i;i<65535;i++)
{
close(i);
}
//4守护进程的实际工作
while(1)
{
if((flag==1)&&(fd=open("/temp/daemon.log",O_CREAT|O_WRONLY|O_APPEND,0600))<0)
{ printf("open file failed\n");
flag=0;
exit(0);
}

write(fd,buf,strlen(buf));
close(fd);
sleep(1);
}


}

转载于:https://www.cnblogs.com/1932238825qq/p/7389872.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值