spyrius是mark lindner先生写的一个小程序.mark lindner先生曾经写过pingutil与cfl几个工具包.我是从gnu找到mark
spyrius是一个多线程的.通用的一个超级守护进程(superdaemon).从事linux/unix的人员应该清楚daemon的具体含义,模糊 【程序编程相关:10046event 漫步】
lindner先生的.希望这里看客经常去gnu的人也很多,并都得到自己的收获与快乐. 【推荐阅读:Java操作文本文件中的中文】
spyrius在一个tcp端口进行侦听来自客户端的连接,不像一些传统的daemons,必须产生一个新的子进程将来为每一个客户端连 【扩展信息:Java程序的性能优化StringBuf】
的话可以想象一下inetd所做的工作.
接来进行服务(service).spyrius是一个基于多线程的工具,利用每一个线程来处理请求.用线程替代进程的好处之一就是共享
了进程的相关堆栈资源等,避免了进程创建所带来的消耗.
spyrius另外的一个特点是将特定的功能服务进行模块化.譬如网络通信.解析报文.创建线程.等等被设计成为plug-in模块,
可以被独立的编写与调试.你可以通过配置文件组合自己的spyrius.
plug-in模块通过一组api与daemon来进行交互,当然,也提供了相应的api与client来通信.spyrius主程序在spyrius.c文件中,默认指定了管理端口(spyr_admin_port)8381与服务端口(spyr_server_port)8380.主程序
从命令行读取配置参数,其中包含:
-a 指定管理端口,即spyr_admin_port -p 指定服务端口,即spyr_server_port -t 指定任务运行超时时间 -w 指定最大工作的worker线程数量. -c 读取相应的配置文件. 当然,如果没有使用命令行参数的话,spyrius带有默认缺省指定的. 87-174行使用getopt处理完成命令行参数后,程序开始创建守护进程,进程首先fork,父进程退出程序,子进程调用spyr_daemon_init来完成一些操作变成守护进程.
193: if(!spyr_daemon_init(sp, ap)) 我们进入spyr_daemon_init里面,此时文件变成daemon.c,从名字也可以看出这个文件代码的主要功能.在93行是spyr_daemon_init函数.第一步,调用openlog,开启log功能,为后续的信息输出做好准备.因为程序变为守护进程后,没有控制
终端,所以无法使用stdout,stderr来进行输出.创建守护进程的步骤,stevens先生已经提到,相信各位看官也熟悉,我这里也不
再絮叨.
接下来,spyr_daemon_init函数进行服务端口与管理端口的创建.... 下一页