当前位置: 主页 > 电脑系统维修 > Linux操作系统下保护历程的编程办法

Linux操作系统下保护历程的编程办法

发布时间:2015-09-13 09:52点击:

  保护历程(Daemon)是运转正在后盾的一种特别历程。它于掌握终端况且周期性地施行那种使命或者期待解决某些发作的事情。保护历程是一种很有用的历程。Linux的大少数服务器就是用保护历程完成的。比方,Internet服务器inetd,Web服务器httpd等。同声,保护历程实现许多零碎使命。比方,工作计划历程crond,打印历程lpd等。###adv###保护历程的编程自身并没有简单,简单的是各族读物的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正在子历程中后盾施行。

  2. 脱离掌握终端,登录人机会话和历程组有多余先引见一下Linux中的历程与掌握终端,登录人机会话和历程组之间的联系:历程归于一度历程组,历程组号(GID)就是历程组长的历程号(PID)。登录人机会话能够蕴含多个历程组。该署历程组共享一度掌握终端。某个掌握终端一般是创立历程的登录终端。掌握终端,登录人机会话和历程组一般是从父历程承继上去的。咱们的手段就是要解脱它们,使之没有受它们的反应。办法是正在第1点的根底上,调用setsid()使历程变化人机会话组长:

  注明:当历程是人机会话组长时setsid()调用失利。但第小半曾经历程没有是人机会话组长。setsid()调用顺利后,历程变化新的人机会话组长和新的历程组长,并与本来的登录人机会话和历程组脱离。因为人机会话进程对于掌握终端的独占性,历程同声与掌握终端脱离。3. 历程从新翻开掌握终端现正在,历程曾经变化无终端的人机会话组长。但它能够从新请求翻开一度掌握终端。能够经过使历程没有再变化人机会话组长来历程从新翻开掌握终端:

  4. 开放翻开的资料形容符历程从创立它的父历程这里承继了翻开的资料形容符。如没有开放,将会糜费零碎资源,形成历程所正在的资料零碎无奈卸下以及惹起无奈意料的谬误。按如次办法开放它们:for(i=0;i 开放翻开的资料形容符close(i);5. 改观以后任务节目历程运动时,其任务节目所正在的资料零碎没有能卸下。正常需求将任务节目改观到根节目。关于需求转储中心,写运转日记的历程将任务节目改观到一定节目如/tmpchdir(/)6. 重设资料创立掩模历程从创立它的父历程这里承继了资料创立掩模。它能够修正保护历程所创立的资料的存取位。为预防这小半,将资料创立掩模肃清:umask(0);7. 解决SIGCHLD信号解决SIGCHLD信号并没有是必需的。但关于某些历程,尤其是服务器历程常常正在要求到来时生成子历程解决要求。假如父历程没有期待子历程终了,子历程将变化僵尸历程(zombie)从而占用零碎资源。假如父历程期待子历程终了,将增多父历程的累赘,反应服务器历程的并发功能。正在Linux下能够容易地将SIGCHLD信号的操作设为SIG_IGN。signal(SIGCHLD,SIG_IGN);那样,内核正在子历程终了时没有会发生僵尸历程。这小半与BSD4没有同,BSD4下必需显式期待子历程终了能力僵尸历程。

  三. 保护历程范例保护历程范例囊括两全体:主顺序test.c和初始化顺序init.c。主顺序每隔一秒钟向/tmp节目中的日记test.log演讲运转形态。初始化顺序中的init_daemon因变量担任生成保护历程。观众群能够应用init_daemon因变量生利润人的保护历程。1. init.c清单

  布告:天极网操作零碎栏目需求少量原创,稿酬丰富。邮箱:

  火辣热点引荐:微软最新操作零碎Windows Vista专区

  最新专题引荐:Windows操作零碎罕见驱动毛病处理办法

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
电脑维修