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

實例解析Perl守護進程用法

開發 架構
Perl守護進程是一種很有用的進程。Linux的大多數服務器就是用Perl守護進程實現的。比如,Internet服務器inetd,Web服務器httpd等。

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

Perl守護進程

LinuxPerl守護進程的編程方法

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

一.Perl守護進程及其特性

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

二、Perl守護進程實例

Perl守護進程實例包括兩部分:主程序test.c和初始化程序init.c。主程序每隔一分鐘向/tmp目錄中的日志test.log報告運行狀態。初始化程序中的init_daemon函數負責生成Perl守護進程。讀者可以利用init_daemon函數生成自己的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. //是***子進程,后臺繼續執行  
  15. setsid();//***子進程成為新的會話組長和進程組長  
  16. //并與控制終端分離  
  17. if(pid=fork())  
  18. exit(0);//是***子進程,結束***子進程  
  19. elseif(pid<0)  
  20. exit(1);//fork失敗,退出  
  21. //是第二子進程,繼續  
  22. //第二子進程不再是會話組長  
  23.  
  24. for(i=0;i<NOFILE;++i)//關閉打開的文件描述符  
  25. close(i);  
  26. chdir("/tmp");//改變工作目錄到/tmp  
  27. umask(0);//重設文件創建掩模  
  28. return;  
  29. }  
  30.  

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

  1. #include<time.h> 
  2.  
  3. voidinit_daemon(void);//Perl守護進程初始化函數  
  4.  
  5. main()  
  6. {  
  7. FILE*fp;  
  8. time_tt;  
  9. init_daemon();//初始化為Daemon  
  10.  
  11. while(1)//每隔一分鐘向test.log報告運行狀態  
  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
執行:./test
查看進程:ps-ef
從輸出可以發現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進程啟動函數

2010-07-19 14:20:57

Perl函數

2010-07-15 13:13:21

Perl多進程

2010-07-13 13:49:43

Perl foreac

2010-07-23 13:46:27

Perl語言

2010-07-16 13:10:36

Perl哈希表

2010-07-14 15:32:21

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構造函數

2010-07-19 14:13:41

Perl函數

2010-07-15 15:47:46

Perl守護進程

2010-07-20 15:02:20

Perl數組

2010-07-13 09:23:00

Perl變量

2010-07-15 10:47:22

Perl命令行

2010-07-26 15:17:51

Perl解析XML文件

2010-07-14 12:39:30

Prel字符串
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费小视频在线观看 | 亚洲v区| 国产日韩欧美一区 | 久草综合在线视频 | 久久精品国产亚洲 | 1204国产成人精品视频 | 色橹橹欧美在线观看视频高清 | 精品视频一区二区三区在线观看 | 精品综合久久 | 日韩一及片 | 农村真人裸体丰满少妇毛片 | 免费毛片网站在线观看 | 久久综合一区二区三区 | 亚洲欧美综合精品久久成人 | 亚洲精品久久久9婷婷中文字幕 | av免费电影在线 | 永久精品 | 日本一区二区三区在线观看 | 91久久久久久久久久久久久 | 日韩免费av网站 | 国产乱码高清区二区三区在线 | 精品伊人| 99re热精品视频 | 国产91精品久久久久久久网曝门 | 欧美婷婷| 天天干夜夜操 | 中文字幕一区二区三区不卡 | 成人午夜免费福利视频 | 亚洲网在线 | 中文字幕在线免费视频 | 人人看人人搞 | 国产免费观看视频 | 在线第一页 | 91精品国产一区二区三区 | 亚洲三区在线观看 | 久久亚洲天堂 | av免费成人| 一级aaaaaa毛片免费同男同女 | 久久久久亚洲精品国产 | 国产japanhdxxxx麻豆 | 一区二区三区视频在线 |