Linux Deamon(守护进程)实现方法
from: http://agiser.bokee.com/viewdiary.13976981.html
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进
程。
Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。
比如,作业规划进程crond,打印进程lpd等。
守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相同,造成不同
Unix环境下守护进程的编程规则并不一致。需要注意,照搬某些书上的规则(特别是BSD4.3和低版本的System
V)到Linux会出现错误的。下面将给出Linux下守护进程的编程要点和详细实例。
一. 守护进程及其特性
守护进程最重要的特性是后台运行。在这一点上DOS下的常驻内存程序TSR与之相似。其次,守护进程必须与其运行前的环境隔离开来。这些环境包括未
关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。最
后,守护进程的启动方式有其特殊之处。它可以在Linux系统启动时从启动脚本/etc/rc.d中启动,可以由作业规划进程crond启动,还可以由用
户终端(通常是 shell)执行。
总之,除开这些特殊性以外,守护进程与普通进程基本上没有什么区别。因此,编写守护进程实际上是把一个普通进程按照上述的守护进程的特性改造成为守护进程。如果对进程有比较深入的认识就更容易理解和编程了。
二. 守护进程的编程要点
前面讲过,不同Unix环境下守护进程的编程规则并不一致。所幸的是守护进程的编程原则其实都一样,区别在于具体的实现细节不同。这个原则就是要满
足守护进程的特性。同时,Linux是基于Syetem V的SVR4并遵循Posix标准,实现起来与BSD4相比更方便。编程要点如下;
1. 在后台运行。
为避免挂起控制终端将Daemon放入后台执行。方法是在进程中调用fork使父进程终止,让Daemon在子进程中后台执行。
if(pid=fork())
exit(0); //是父进程,结束父进程,子进程继续
2. 脱离控制终端,登录会话和进程组
有必要先介绍一下Linux中的进程与控制终端,登录会话和进程组之间的关系:进程属于一个进程组,进程组号(GID)就是进程组长的进程号
(PID)。登录会话可以包含多个进程组。这些进程组共享一个控制终端。这个控制终端通常是创建进程的登录终端。控制终端,
相关文档:
浅析linux下键盘设备工作和注册流程
【浅析linux下鼠标驱动的实现】
input_init()=>
=>
class_register(&input_class);注册input类
input_proc_init();创建proc下的目录和文件
register_chrdev(INPUT_MAJOR, "input", &input_fops);注册驱动程序到cdev_map上,以待驱动设备.
drivers\input\keybo ......
对于鼠标驱动和前面分析过的键盘驱动都是共用input模型,所以,对于事件上报和处理的方式都没有区别,只是mouse鼠标驱动当上报完dx,dy,left,middle,right之后,需要调用input_sync(),将前面上报的仅仅填充在缓冲区中的数据,通过mousedev_notify_readers()发送给open了的挂接在mousedev->client_list链表上等待获取鼠标信息的 ......
在linux下安装JDK如下:
第一步:查看Linux自带的JDK是否已安装
(1)查看已经安装的jdk:
# rpm -qa|grep jdk ← 查看jdk的信息或直接执行
或
# rpm -q jdk
或
# java -version
(2)rpm -qa|grep jdk 卸载:
......
本人初学linux,在领导督促和工作压力下,按照前人部署手册和强大搜索引擎帮助下,用lvs和mon实现的nat负载均衡,vs是suse 10.2,realserver是windows2003的IIS部署。
1 安装
1.1 网络拓扑图
1.1 检查内核是否支持lvs选项
&nbs ......
在终端显示窗口运行yast命令,出现图形界面
software-->software management
左侧Filter-->Package Group-->Productivity-->Networking-->Other-->telnet server
选择确定,会提示插入suse linux cd4,放入光盘后确定直到安装完成
开启telnet服务
#chkconfig telnet on
#rcxinetd restart
如果root用 ......