le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Il processo Daemon (elf) è un processo di servizio in background in Linux È un processo con una lunga durata. Di solito è indipendente dal terminale di controllo ed esegue periodicamente determinate attività o attende che si verifichino determinati eventi.
chdir()
Funzione: per evitare di occupare il file system non montabile, è anche possibile modificarlo in altri percorsi;#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
void daemonize(void)
{
pid_t pid;
/*
* 成为一个新会话的首进程,失去控制终端
*/
if ((pid = fork()) < 0) {
perror("fork");
exit(1);
} else if (pid != 0) /* parent */
exit(0);
setsid();
/*
* 改变当前工作目录到/目录下.
*/
if (chdir("/") < 0) {
perror("chdir");
exit(1);
}
/* 设置umask为0 */
umask(0);
//重定向0,1,2文件描述符到 /dev/null,因为已经失去控制终端,再操作0,1,2没有意义.
close(0);
open("/dev/null", O_RDWR);
dup2(0, 1);
dup2(0, 2);
}
int main(void) {
daemonize();
while(1);
/* 在此循环中可以实现守护进程的核心工作 */
}
Quando esegui questo programma, diventa un processo demone e non è più associato al terminale corrente. Non puoi vederlo con il comando ps È necessario eseguire il comando ps con il parametro x per vederlo. Inoltre, puoi anche vedere che la chiusura della finestra del terminale o il logout non influiranno sull'esecuzione del demone.
Perché il processo daemon deve essere separato dal terminale di controllo?
Il motivo per cui è separato dal terminale è quello di evitare che il processo venga interrotto dalle informazioni generate da qualsiasi terminale e le sue informazioni durante l'esecuzione non verranno visualizzate su nessun terminale.Poiché in Linux l'interfaccia attraverso la quale ogni sistema comunica con gli utenti è chiamata terminale, ogni processo che inizia ad essere eseguito da questo terminale si baserà su
Collegato a questo terminale, questo terminale è chiamato terminale di controllo di questi processi. Quando il terminale di controllo è chiuso, i processi corrispondenti si chiuderanno automaticamente. Tuttavia, molte delle nostre applicazioni non vogliono uscire dal processo senza disattivare gli interrupt, come database, servizi web, servizi di gioco, ecc. In questo momento, dobbiamo utilizzare processi demone.
Questo articolo introduce il concetto di processo daemon, i passaggi di programmazione del processo daemon, l'implementazione del codice e il ruolo del processo daemon. Aiutaci a comprendere i principi di funzionamento dei programmi in background, ecc.