- 论坛徽章:
- 0
|
6.5.1 基本概念
- 守护进程就是在后台执行, 没有控制终端或登录 Shell 的进程
6.5.2 实现方法
关闭文件描述符: for (i=0; i ===============================================================================
* 使用 setsid 设置为新会话的领头进程
* 因为 setsid 要求调用进程不是会话的领头进程时才有效.
* 因此, 首先可用 fork 派生, 并结束父进程.
* 之后调用 setsid, 子进程成为新会话的领头进程, 从而与原有会话, 进程组, tty 脱离.
* 但是, 为避免作为新会话领头进程的子进程在打开一个终端设备时, 拥有一个控制终端.
* 再次派生, 并结束父进程, 可让子进程成为非会话领头进程.
---------------------------------------
if (fork ())
exit (0);
setsid ();
if (fork ())
exit (0);
===============================================================================
改变工作目录到根目录: chdir ("/")
进程的 umask 设置为 0: umask (0)
处理 SIGCHLD 信号, 为避免形成僵尸进程
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/29346/showart_228114.html |
|