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

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

}

最新文章

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

热门文章

  1. 软件测试人员必备的Python知识图库
  2. springcolud 的学习(一),架构的发展史
  3. vue动态加载不同的组件(分内部和外部组件)
  4. 小div在大div中垂直居中方式
  5. html 随机验证码
  6. js数组(五)
  7. Vue学习之Babel配置(十六)
  8. 2. ES6基础-let和const命令
  9. 非洲affrike单词
  10. 使用SAP open connector调用第三方系统的API