成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實例解析Perl守護進程用法

開發(fā) 架構
Perl守護進程是一種很有用的進程。Linux的大多數(shù)服務器就是用Perl守護進程實現(xiàn)的。比如,Internet服務器inetd,Web服務器httpd等。

本文和大家重點討論一下Perl守護進程的概念,Perl守護進程(Daemon)是運行在后臺的一種特殊進程。它獨立于控制終端并且周期性地執(zhí)行某種任務或等待處理某些發(fā)生的事件。

Perl守護進程

LinuxPerl守護進程的編程方法

Perl守護進程(Daemon)是運行在后臺的一種特殊進程。它獨立于控制終端并且周期性地執(zhí)行某種任務或等待處理某些發(fā)生的事件。Perl守護進程是一種很有用的進程。Linux的大多數(shù)服務器就是用Perl守護進程實現(xiàn)的。比如,Internet服務器inetd,Web服務器httpd等。同時,Perl守護進程完成許多系統(tǒng)任務。比如,作業(yè)規(guī)劃進程crond,打印進程lpd等。
Perl守護進程的編程本身并不復雜,復雜的是各種版本的Unix的實現(xiàn)機制不盡相同,造成不同Unix環(huán)境下Perl守護進程的編程規(guī)則并不一致。這需要讀者注意,照搬某些書上的規(guī)則(特別是BSD4.3和低版本的SystemV)到Linux會出現(xiàn)錯誤的。下面將全面介紹Linux下Perl守護進程的編程要點并給出詳細實例。

一.Perl守護進程及其特性

Perl守護進程最重要的特性是后臺運行。在這一點上DOS下的常駐內存程序TSR與之相似。其次,Perl守護進程必須與其運行前的環(huán)境隔離開來。這些環(huán)境包括未關閉的文件描述符,控制終端,會話和進程組,工作目錄以及文件創(chuàng)建掩模等。這些環(huán)境通常是Perl守護進程從執(zhí)行它的父進程(特別是shell)中繼承下來的。***,Perl守護進程的啟動方式有其特殊之處。它可以在Linux系統(tǒng)啟動時從啟動腳本/etc/rc.d中啟動,可以由作業(yè)規(guī)劃進程crond啟動,還可以由用戶終端(通常是shell)執(zhí)行。
總之,除開這些特殊性以外,Perl守護進程與普通進程基本上沒有什么區(qū)別。因此,編寫Perl守護進程實際上是把一個普通進程按照上述的Perl守護進程的特性改造成為Perl守護進程。如果讀者對進程有比較深入的認識就更容易理解和編程了。

二、Perl守護進程實例

Perl守護進程實例包括兩部分:主程序test.c和初始化程序init.c。主程序每隔一分鐘向/tmp目錄中的日志test.log報告運行狀態(tài)。初始化程序中的init_daemon函數(shù)負責生成Perl守護進程。讀者可以利用init_daemon函數(shù)生成自己的Perl守護進程。

1.init.c清單 

  1. init.c#include<unistd.h> 
  2. #include<signal.h> 
  3. #include<sys/param.h> 
  4. #include<sys/types.h> 
  5. #include<sys/stat.h> 
  6. voidinit_daemon(void)  
  7. {  
  8. intpid;  
  9. inti;  
  10. if(pid=fork())  
  11. exit(0);//是父進程,結束父進程  
  12. elseif(pid<0)  
  13. exit(1);//fork失敗,退出  
  14. //是***子進程,后臺繼續(xù)執(zhí)行  
  15. setsid();//***子進程成為新的會話組長和進程組長  
  16. //并與控制終端分離  
  17. if(pid=fork())  
  18. exit(0);//是***子進程,結束***子進程  
  19. elseif(pid<0)  
  20. exit(1);//fork失敗,退出  
  21. //是第二子進程,繼續(xù)  
  22. //第二子進程不再是會話組長  
  23.  
  24. for(i=0;i<NOFILE;++i)//關閉打開的文件描述符  
  25. close(i);  
  26. chdir("/tmp");//改變工作目錄到/tmp  
  27. umask(0);//重設文件創(chuàng)建掩模  
  28. return;  
  29. }  
  30.  

 2.test.c清單test.c#include<stdio.h>
 

  1. #include<time.h> 
  2.  
  3. voidinit_daemon(void);//Perl守護進程初始化函數(shù)  
  4.  
  5. main()  
  6. {  
  7. FILE*fp;  
  8. time_tt;  
  9. init_daemon();//初始化為Daemon  
  10.  
  11. while(1)//每隔一分鐘向test.log報告運行狀態(tài)  
  12. {  
  13. sleep(60);//睡眠一分鐘  
  14. if((fp=fopen("test.log","a"))>=0)  
  15. {  
  16. t=time(0);  
  17. fprintf(fp,"Imhereat%s\n",asctime(localtime(&t)));  
  18. fclose(fp);  
  19. }  
  20. }  
  21. }  
  22.  

 以上程序在RedHatLinux6.0下編譯通過。步驟如下:
編譯:gcc-g-otestinit.ctest.c
執(zhí)行:./test
查看進程:ps-ef
從輸出可以發(fā)現(xiàn)testPerl守護進程的各種特性滿足上面的要求。
zt:http://swallor.blogdriver.com/swallor/567186.html

【編輯推薦】

 

  1. 應用Perl多進程技術到自動化測試腳本
  2. Perl多進程概念解析
  3. 解析四大Perl操作符用法
  4. 術語匯編 Perl多進程概念詳解
  5. 實例解析Perl多進程技術在自動化測試中的應用
責任編輯:佚名 來源: csdn.net
相關推薦

2010-07-16 08:47:53

Perl if語句

2010-07-20 09:45:04

Perl繼承

2010-07-19 14:37:01

Perl進程啟動函數(shù)

2010-07-19 14:20:57

Perl函數(shù)

2010-07-15 13:13:21

Perl多進程

2010-07-13 13:49:43

Perl foreac

2010-07-23 13:46:27

Perl語言

2010-07-14 15:32:21

Perl轉義字符

2010-07-16 13:10:36

Perl哈希表

2010-07-21 13:59:59

Perl引用

2010-07-15 12:51:17

Perl多進程

2010-07-15 10:22:23

Perl控制結構

2010-07-16 16:56:01

Perl構造函數(shù)

2010-07-19 14:13:41

Perl函數(shù)

2010-07-15 15:47:46

Perl守護進程

2010-07-20 15:02:20

Perl數(shù)組

2010-07-13 09:23:00

Perl變量

2010-07-14 12:39:30

Prel字符串

2010-07-15 10:47:22

Perl命令行

2010-07-26 15:17:51

Perl解析XML文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠久久久 | 久久久久免费 | 国产精品污www一区二区三区 | 亚洲国产情侣自拍 | 天堂亚洲 | 欧美日韩一区二区在线观看 | 一区二区在线 | 美女二区 | 亚洲电影一区二区三区 | 免费av手机在线观看 | 午夜小电影 | 麻豆av电影网| 国产精品黄视频 | 国产精品资源在线 | 色婷婷综合网站 | 日韩在线观看视频一区 | 国产激情网 | 免费午夜视频在线观看 | 亚洲成人精品在线观看 | 在线免费激情视频 | 狠狠色综合久久丁香婷婷 | 一区二区福利视频 | 91精品国产91久久综合桃花 | 有码在线 | 欧美操操操 | 国产精品久久久久久久久久 | 成人欧美一区二区三区1314 | 亚洲视频在线看 | 91精品国产综合久久久久蜜臀 | 久久国产一区二区三区 | 精品国产99 | 精品免费看 | 国产精品综合色区在线观看 | 黄色免费av | 99精品欧美一区二区蜜桃免费 | 成人欧美一区二区三区白人 | 精品日韩一区二区 | 亚洲欧洲国产视频 | 草久视频 | 夜夜爆操 | 涩爱av一区二区三区 |