新聞中心
隨著linux系統(tǒng)在世界范圍內(nèi)普及,如何正確優(yōu)雅的退出后臺(tái)程序(Daemon)就成了Linux開發(fā)者們需要面對(duì)的問題。本文將討論使用代碼來讓Linux后臺(tái)程序正確地終止。

首先,Linux帶有可用程序調(diào)用的接口可以由我們的后臺(tái)程序使用。 在Linux而言,有兩種引起程序終止的方式: 一種是使用信號(hào)(signal)來終止正在執(zhí)行的程序,另一種是接收到信號(hào)處理程序響應(yīng)來終止進(jìn)程。 兩種方式都可以在開發(fā)者程序中實(shí)現(xiàn)以完成程序的正確退出。
以下是一個(gè)使用信號(hào)實(shí)現(xiàn)程序終止的示例代碼:
#include
// 處理信號(hào)的處理程序
static void handle_signal(int signal) {
//設(shè)置程序退出狀態(tài)并退出
_exit(signal);
}
int main() {
// 創(chuàng)建信號(hào)處理程序
signal(SIGINT, handle_signal);
// 主要程序代碼
// 等待信號(hào),然后跳出
pause();
return 0;
}
該例子演示了程序如何接收處理程序,并由handle_signal()方法處理信號(hào),該方法負(fù)責(zé)清理程序,并且設(shè)置退出狀態(tài)后終止運(yùn)行。
另外,可以利用系統(tǒng)進(jìn)程控制函數(shù)來實(shí)現(xiàn)Linux后臺(tái)程序的正常終止。 以下示例代碼顯示了如何使用該函數(shù)實(shí)現(xiàn)后臺(tái)程序的正確退出:
#include
#include
int main() {
// 后臺(tái)進(jìn)程
// 獲取當(dāng)前進(jìn)程id
pid_t pid = getpid();
// 將進(jìn)程改回前臺(tái)進(jìn)程
tcsetpgrp(STDIN_FILENO, pid);
// 主要程序代碼
// 向進(jìn)程發(fā)送SIGTERM信號(hào)來終止
kill(pid, SIGTERM);
return 0;
}
上面的代碼使用了tcsetpgrp()函數(shù)將當(dāng)前進(jìn)程置于前臺(tái),隨后根據(jù)當(dāng)前進(jìn)程Id發(fā)送SIGTERM信號(hào)到進(jìn)程以正確退出。
總之,Linux后臺(tái)程序的正確退出は很重要的一個(gè)問題,開發(fā)者們必須把握正確的方法來正確的終止Linux后臺(tái)程序。 首先使用信號(hào)終止程序,也可以使用系統(tǒng)進(jìn)程控制函數(shù)來實(shí)現(xiàn)Linux后臺(tái)程序的正確退出。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
分享題目:Linux后臺(tái)程序正確退出方法研究(linux后臺(tái)程序退出)
文章來源:http://fisionsoft.com.cn/article/cocejeh.html


咨詢
建站咨詢
