守护进程daemon.c
2024-10-20 06:19:33
它的特点是:
•不占用控制终端(后台运行)
•独立于控制终端
•周期性运行
#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);
}
}
最新文章
- c#中字段和属性的区别
- unity3d的GUI元素的界面坐标系统总结(有公式)
- 安装完mysql后用root不能su成mysql
- 用户输入 i. 检测常用手势(一)
- PowerDesigner 正向工程 和 逆向工程 说明
- hive 中的Sort By、 Order By、Cluster By、Distribute By 区别
- Linux-C语言中gettimeofday()函数的使用方法(转载)
- 一则简单演示样例看Oracle的“无私”健壮性
- spring创建bean的三种方式
- eclipse格式化代码快捷键失效
- vmware ubuntu硬盘空间不够用,空间扩展
- 解决npm ERR! Please try running this command again as root/Administrator. 问题
- 单链表查找第i个节点
- JMeter&#160;集合点设置之Synchronizing&#160;Timer的使用
- Reverse Words in a String I &; Reverse Words in a String II
- sqlserver2008r2通过发布和订阅的方式进行数据库同步
- Centos7安装OpenLDAP
- 为什么zookeeper会导致磁盘IO高【转】
- DP 租用游艇
- MySQL数据类型以及基本使用详解