Chinaunix首页 | 论坛 | 博客
  • 博客访问: 376096
  • 博文数量: 48
  • 博客积分: 743
  • 博客等级: 上士
  • 技术积分: 956
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-22 13:51
文章分类

全部博文(48)

文章存档

2015年(3)

2014年(17)

2012年(23)

2011年(5)

分类: C/C++

2014-04-11 18:07:19

函数原型:

  1. #include <unistd.h>
  2. int daemon(int nochdir, int noclose);

参数:

输入:nochdir 如果值为0,则将切换工作目录为根目录,否则为程序的工作目录
           noclose 如果值为0,则将标准输入,输出和标准错误都重定向到/dev /null 
输出:无

返回值0 --成功  -1 -- 失败并设置errno

函数功能说明:

  daemon的作用是通过调用该函数使程序变为守护进程。经过这个函数调用后的程序将运行在后台,成为一个daemon程序,而linux下大多的服务都是以此方式运行的。
	
	
		
		
		
		
		
例: 
  1. #include <unistd.h>
  2.     #include <stdio.h>
  3.      
  4.     int do_sth()
  5.     {
  6.         //Add what u want
  7.         return 0;
  8.     }
  9.     int main()
  10.     {
  11.         daemon(0,0);
  12.         while ( 1 )
  13.         {
  14.             do_sth();
  15.             sleep(1);
  16.         }
  17.     }

编译并运行
[
leconte@localhost daemon]$ gcc -o test test.c
[
leconte@localhost daemon]$ ./test

程序进入了后台,通过ps查看进程情况,可以看到进程的父进程id为1,即init进程

用lsof查看test进程所打开的文件,可以看到文件描述符0,1,2都被重定向到/dev/null

并且能够看到,进程的当前工作目录(cwd)为根目录/,daemon函数已经帮我们完成了daemon化的过程,接下来我们只需要关注于程序功能的实现了。




阅读(969) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~