2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Le processus démon (elf) est un processus de service en arrière-plan sous Linux. Il s'agit d'un processus avec une longue durée de vie. Il est généralement indépendant du terminal de contrôle et exécute périodiquement certaines tâches ou attend que certains événements se produisent.
chdir()
Fonction : Pour éviter d'occuper le système de fichiers non montable, vous pouvez également le modifier vers d'autres chemins ;#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);
/* 在此循环中可以实现守护进程的核心工作 */
}
Lorsque vous exécutez ce programme, il devient un processus démon et n'est plus associé au terminal actuel. Vous ne pouvez pas le voir avec la commande ps. Vous devez exécuter la commande ps avec le paramètre x pour le voir. De plus, vous pouvez voir que la fermeture de la fenêtre du terminal ou la déconnexion n’affectera pas le fonctionnement du démon.
Pourquoi le processus démon doit-il être séparé du terminal de contrôle ?
La raison pour laquelle il est séparé du terminal est d'éviter que le processus ne soit interrompu par des informations générées par n'importe quel terminal, et ses informations pendant l'exécution ne seront affichées sur aucun terminal.Puisque sous Linux, l'interface par laquelle chaque système communique avec les utilisateurs est appelée un terminal, chaque processus qui démarre à partir de ce terminal s'appuiera sur
Rattaché à ce terminal, ce terminal est appelé terminal de contrôle de ces processus. Lorsque le terminal de contrôle est fermé, les processus correspondants se fermeront automatiquement. Cependant, beaucoup de nos applications ne souhaitent pas quitter le processus sans désactiver les interruptions, telles que les bases de données, les services Web, les services de jeux, etc. À ce stade, nous devons utiliser un processus démon.
Cet article présente le concept de processus démon, les étapes de programmation du processus démon, l'implémentation du code et le rôle du processus démon. Aidez-nous à comprendre les principes de fonctionnement des programmes d'arrière-plan, etc.