首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 精灵是怎样炼成的?
【标  题】:精灵是怎样炼成的?
【关键字】:
【来  源】:http://www.cppblog.com/waterinfire/archive/2007/03/08/19461.html

精灵是怎样炼成的?

??????许多程序员说精灵(daemon)不是魔鬼(demon)。即使有时似乎象魔鬼,但你的服务器是不会由魔鬼控制的(或许你的某些用户会由魔鬼控制,但你的服务器不会)。

????? 我们把精灵定义为一个在后台运行的程序,用于管理系统的各个功能。该词的字面意思是“介乎神与人的精灵”。诗人威廉.巴特勒.耶茨很喜欢该词的意喻及其对现实二重性的表达。他以人来看待精灵,用精灵来表达人性的另一面。你不会明白,魔鬼不存在该有多好!例如,你怎么知道你这块馅饼是大的?除非你曾有一块比这小的。

???? 事实上,精灵这个术语源自希腊神话。古希腊人称精灵为超人,它充当神与人之间的仲裁者。这是Unix精灵为你所做的一切的最准确描述。实际上,精灵始终呆在后台随时等待调用去执行某些服务。系统上运行的某些精灵执行系统指定的每项服务。但,请不要混淆精灵和进程这两个术语。
????
????既然精灵介于神人之间,那么人有没有可能变成精灵呢?

????在unix的世界中,一般的进程能变成精灵进程吗?答案是肯定的,下面我们就一步一步揭开人到精灵的进化过程。

???决裂阶段:
???在这个阶段,我们必须脱离父母的怀抱,走向自己的新天地
???
???/*?父母创造了我们
???if(fork() > 0) {
??????/* 父母给了我们自由 */
??????exit(0);
???}

???创造阶段:
???父母给我们自由身,我们可以创造自己的新天地。为了将来美好的未来,我们要做三件事情:
???1)创造新的会话期,我们成为会话期的领导
???2)创造新的组织(进程组),我们自己成为该组的组长
???3)我们脱离终端的控制
???setsid();

???升华阶段

???“上善若水,善利万物而不争。处众人之所恶,故几于道。”,作为精灵的候选人,创造了自己的组织之后,不能再以组长自居,而应把自己当成普通人。
???
???signal(SIGHUP,SIG_IGN);
???if(fork()>0){
??????/*毁灭原身*/
??????exit(0);
???}

???返璞归真:

???chdir("/");
???umask(0);
???for(i=0;i<64;++i)
???{
??????close(i);
???}

???圆满阶段:
???经过以上各个修炼阶段,在此为止我们已经具备了精灵的各个条件。但是以上很不够,作为一个精灵,最主要的还是我们毛主席那句话:“为人民服务”。

???我们应该在这个阶段把我们要做的事启动起来,做以下事情:

???int service()
???{
??????/* 有什么要求 */
??????data = getIncomingRequest();

??????/*?为人民服务 */
??????result? = processRequest(data)

??????/* 对人民的所求有个交代 */
??????sendResponse(result);
???}


???

Unix调试指导书:【上一篇】
Windows CE 下I/O操作基础:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • There is a code,i'm puzzled
  • ACCESS数据库中TEXT字段的真实长度
  • Linux 核心编译与管理(摘自鸟哥私房菜)---2
  • 国内外知名ERP厂商列表
  • 第一篇,随便说说个人关于web的看法。
  • aix培训第三天[aix管理基础]
  • 快速访问Win98桌面的技巧
  • 如何保护笔记本电脑的屏幕?
  • 原:图的拓扑排序
  • CDMA系统软切换过程浅析
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.