linux中的守护进程daemon
	
    
    
	
一. 守护进程及其特性
(1)最重要的特征是后台运行
(2)必须与运行前的环境隔离开来。这些环境通常是守护进程从执行它的父进程中继承下来的。环境包  括还未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建淹模等。
(3)启动方式。可以由用户终端执行,也可以从启动脚本/etc/rc.d中启动。
总之,编写守护进程实际上是把一个普通进程按照上述的守护进程的特性改造成为守护进程。
二.守护进程的编程要点
1.在后台运行
	  为避免挂起控制终端将daemon放入后台执行。方法是在进程中调用fork使父进程终止,让daemon 	再子进程中后台执行。
2.脱离终端控制,登入会话和进程组
 	在1的基础上,调用setsid()使第一个子进程成为会话组长。由于会话过程对终端的独占性,进程同时与控制终端脱离。
     setsid();
3.禁止进程重新打开控制终端
  现在,进程已经成为无终端的会话组长。但它可以重新申请打开一个控制终端。
    可以通过使进程不再成为会话组长来禁止进程重新打开控制终端:
if(pid=fork())
     exit(0); //结束第一子进程,第二子进程继续(第二子进程不再是会话组长)
4. 关闭打开的文件描述符
  进程从创建它的父进程那里继承了打开的文件描述符。如不关闭,将会浪费系统资源,
    造成进程所在的文件系统无法卸下以及引起无法预料的错误。按如下方法关闭它们:
for(i=0;i 关闭打开的文件描述符close(i);>
5. 改变当前工作目录
  进程活动时,其工作目录所在的文件系统不能卸下(即每个进程都由一个工作目录)。一般需要将工作目录改变到根目录。
    对于需要转储核心,写运行日志的进程将工作目录改变到特定目录如 /tmpchdir("/")
6. 重设文件创建掩模
  进程从创建它的父进程那里继承了文件创建掩模。它可能修改守护进程所创建的文件的存取位。
    为防止这一点,将文件创建掩模清除:umask(0);
7. 处理SIGCHLD信号
  处理SIGCHLD信号并不是必须的。
    但对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。
    如果父进程不等待子进程结束,子进程将成为僵尸进程(zombie)从而占用系统资源。
    如果父进程等待子进程结束,将增加父进程的负担,影响服务器进程的并发性能。
   &nb
    
     
	
	
    
    
	相关文档:
        
    
    linux的free命令中,cached和buffers的区别
Free
  free 命令相对于top 提供了更简洁的查看系统内存使用情况:
  $ free
  total used free shared buffers cachedMem: 255268 238332 16936 0 85540 126384-/+ buffers/cache: 26408 228860Swap: 265000 0 265000
  Mem:表示物理内存统计
  -/+ buffers/ca ......
	
    
        
    
    在众多网络应用中,FTP(文件传输协议)有着非常重要的地位。Internet中一个十分重
要的资源就是软件资源,而各种各样的软件资源大多数都放在FTP服务器中。与大多数
Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户
机程序,连接到主机上的FTP服务器程序。用户通过客户机程序向服务器程 ......
	
    
        
    
    一、Qt3/Embedded的输入设备的驱动接口实现原理分析
       1、Qt3/Embedded把与底层硬件相关的源文件统一放在src/embedded目录下,所以我们最好也把自己的设备驱动接口文件放到此目录。
2、Qt/Embedded中的输入设备分为鼠标类与键盘类。在3.x版本系列中,鼠标设备的抽象基类为QWSMouseHandler,在sr ......
	
    
        
    
    Linux多进程相关内容
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2006/10/14/linux-multiprocess-info/以及本声明。
最近在用 perl 写一个Linux下的多进程守护进程,因此研究了一下Linux下的进程相关的知识。现将心得总结一下。主要是关于进程创建和回收。
fork 
SIGCHLD信 ......
	
    
        
    
    .tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.g ......