亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

Linux程序設計入門 系統進程的詳細介紹3
2007-08-16   網絡

4、守護進程的創建

如果你在DOS時代編寫過程序,那么你也許知道在DOS下為了編寫一個常駐內存的程序我們要編寫多少代碼了.相反如果在Linux下編寫一個"常駐內存"的程序卻是很容易的。我們只要幾行代碼就可以做到. 實際上由于Linux是多任務操作系統,我們就是不編寫代碼也可以把一個程序放到后臺去執行的.我們只要在命令后面加上&符號SHELL就會把我們的程序放到后臺去運行的. 這里我們"開發"一個后臺檢查郵件的程序.這個程序每個一個指定的時間回去檢查我們的郵箱,如果發現我們有郵件了,會不斷的報警(通過機箱上的小喇叭來發出聲音). 后面有這個函數的加強版本加強版本后臺進程的創建思想: 首先父進程創建一個子進程.然后子進程殺死父進程(是不是很無情?). 信號處理所有的工作由子進程來處理.

#include <unistd.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <stdio.h> 
#include <errno.h> 
#include <fcntl.h> 
#include <signal.h> 
/* Linux 的默任個人的郵箱地址是 /var/spool/mail/用戶的登錄名 */ 
#define MAIL "/var/spool/mail/hoyt" 
/* 睡眠10秒鐘 */ 
#define SLEEP_TIME 10 
main(void) 
{ 
pid_t child; 
if((child=fork())==-1) 
{ 
printf("Fork Error:%s ",strerror(errno)); 
exit(1); 
} 
else if(child>0) 
while(1); 
if(kill(getppid(),SIGTERM)==-1) 
{ 
printf("Kill Parent Error:%s ",strerror(errno)); 
exit(1); 
}  
{ 
int mailfd; 
while(1) 
{ 
if((mailfd=open(MAIL,O_RDONLY))!=-1) 
{ 
fprintf(stderr,"%s","07"); 
close(mailfd); 
}  
sleep(SLEEP_TIME); 
} 
} 
            }

你可以在默認的路徑下創建你的郵箱文件,然后測試一下這個程序.當然這個程序還有很多地方要改善的.我們后面會對這個小程序改善的,再看我的改善之前你可以嘗試自己改善一下.比如讓用戶指定郵相的路徑和睡眠時間等等.相信自己可以做到的.動手吧,勇敢的探險者.

好了進程一節的內容我們就先學到這里了.進程是一個非常重要的概念,許多的程序都會用子進程.創建一個子進程是每一個程序員的基本要求!

熱詞搜索:

上一篇:Linux程序設計入門 系統進程的詳細介紹2
下一篇:Linux文件系統損壞后的修復技巧詳細介紹

分享到: 收藏