Linux企業級專案實踐之網路爬蟲(6)——將程式設計成為守護程式
在linux或者unix作業系統中在系統的引導的時候會開啟很多服務,這些服務就叫做守護程式。為了增加靈活性,root可以選擇系統開啟的模式,這些模式叫做執行級別,每一種執行級別以一定的方式配置系統。 守護程式是脫離於終端並且在後臺執行的程式。守護程式脫離於終端是為了避免程式在執行過程中的資訊在任何終端上顯示並且程式也不會被任何終端所產生的終端資訊所打斷。
由於在Linux中,每一個系統與使用者進行交流的介面稱為終端,每一個從此終端開始執行的程式都會依附於這個終端,這個終端就稱為這些程式的控制終端,當控制終端被關閉時,相應的程式都會自動關閉。但是守護程式卻能夠突破這種限制,它從被執行開始運轉,直到整個系統關閉時才退出。如果想讓某個程式不因為使用者或終端或其他地變化而受到影響,那麼就必須把這個程式變成一個守護程式。
我們用一個函式來封裝守護程式相關程式碼,同時使用命令列引數控制我們的爬蟲是否以守護程式的哦方式執行。
static void daemonize()
{
int fd;
if (fork() != 0) exit(0);
setsid();
SPIDER_LOG(SPIDER_LEVEL_INFO, "Daemonized...pid=%d", (int)getpid());
/* redirect stdin|stdout|stderr to /dev/null */
if ((fd = open("/dev/null", O_RDWR, 0)) != -1) {
dup2(fd, STDIN_FILENO);
dup2(fd, STDOUT_FILENO);
dup2(fd, STDERR_FILENO);
if (fd > STDERR_FILENO)
close(fd);
}
/* redirect stdout to logfile */
if (g_conf->logfile != NULL && (fd = open(g_conf->logfile, O_RDWR | O_APPEND | O_CREAT, 0)) != -1) {
dup2(fd, STDOUT_FILENO);
if (fd > STDERR_FILENO)
close(fd);
}
}
命令列引數處理程式碼:
int daemonized = 0;
char ch;
/* parse opt */
while ((ch = getopt(argc, (char* const*)argv, "vhd")) != -1) {
switch(ch) {
case 'v':
version();
break;
case 'd':
daemonized = 1;
break;
case 'h':
case '?':
default:
usage();
}
}
相關文章
- .NET跨平臺實踐:.NetCore、.Net5/6 Linux守護程式設計NetCoreLinux程式設計
- 物聯網教程Linux系統程式設計——特殊程式之守護程式Linux程式設計
- 課程設計:python_網路爬蟲專案Python爬蟲
- 網路爬蟲專案爬蟲
- Linux 守護程式Linux
- python網路爬蟲--專案實戰--scrapy嵌入selenium,晶片廠級聯評論爬取(6)Python爬蟲晶片
- 《Unix 網路程式設計》13:守護程式和 inetd 超級伺服器程式設計伺服器
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- 網路爬蟲(python專案)爬蟲Python
- 專案--python網路爬蟲Python爬蟲
- 北郵《Python程式設計與實踐》——爬蟲學習Python程式設計爬蟲
- Python網路爬蟲實戰小專案Python爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- 企業資料爬蟲專案爬蟲
- python併發程式設計之程式1(守護程式,程式鎖,程式佇列)Python程式設計佇列
- 2019最新《網路爬蟲JAVA專案實戰》爬蟲Java
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- 網路爬蟲——Urllib模組實戰專案(含程式碼)爬取你的第一個網站爬蟲網站
- 企業資料爬蟲專案(二)爬蟲
- Linux守護程式及SystemdLinux
- 如何成為真正專業的程式設計師程式設計師
- Java實現網路爬蟲 案例程式碼Java爬蟲
- 流量之爭即將上演,小程式將成為企業必爭之地!
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- Linux下的守護程式分析Linux
- 好程式設計師Python學習路線之python爬蟲入門程式設計師Python爬蟲
- Python開發爬蟲專案+程式碼Python爬蟲
- 好程式設計師Python培訓分享網路爬蟲的分類程式設計師Python爬蟲
- 好程式設計師Python培訓分享Python之初識網路爬蟲程式設計師Python爬蟲
- [網路爬蟲] 網路爬蟲實踐:大麥網演唱會預約搶票 【待續】爬蟲
- 網路爬蟲——專案實戰(爬取糗事百科所有文章)爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- python 之 併發程式設計(守護程式、互斥鎖、IPC通訊機制)Python程式設計
- PHP 實現守護程式PHP
- Python爬蟲開發與專案實踐(3)Python爬蟲
- 網路爬蟲詳細設計方案爬蟲
- opentracker改造為daemon守護程式
- Python爬蟲開發與專案實戰--分散式程式Python爬蟲分散式
- 守護程式