2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Daemon (elf) -prosessi on taustapalveluprosessi Linuxissa. Se on yleensä riippumaton ohjauspäätteestä ja suorittaa tiettyjä tehtäviä tai odottaa tiettyjen tapahtumien tapahtumista.
chdir()
Toiminto: Voit estää liittämättömän tiedostojärjestelmän varaamisen muuttamalla sen myös muille poluille;#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);
/* 在此循环中可以实现守护进程的核心工作 */
}
Kun suoritat tämän ohjelman, siitä tulee demoniprosessi, eikä sitä enää liitetä nykyiseen päätteeseen. Et näe sitä ps-komennolla Sinun on suoritettava ps-komento x-parametrilla nähdäksesi sen. Lisäksi voit myös nähdä, että pääteikkunan sulkeminen tai uloskirjautuminen ei vaikuta demonin toimintaan.
Miksi demoniprosessi pitää erottaa ohjaavasta päätteestä?
Syy siihen, miksi se on erotettu päätteestä, on estää prosessia keskeyttämästä minkä tahansa päätelaitteen tuottamaa tietoa, ja sen tiedot suorituksen aikana eivät näy missään päätelaitteessa.Koska Linuxissa käyttöliittymää, jonka kautta jokainen järjestelmä kommunikoi käyttäjien kanssa, kutsutaan terminaaliksi, jokainen tästä päätteestä käynnistyvä prosessi perustuu
Tähän päätteeseen liitettynä tätä päätettä kutsutaan näiden prosessien ohjauspäätteeksi. Kun ohjauspääte suljetaan, vastaavat prosessit sulkeutuvat automaattisesti. Monet sovelluksemme eivät kuitenkaan halua poistua prosessista sammuttamatta keskeytyksiä, kuten tietokantoja, verkkopalveluita, pelipalveluita jne. Tällä hetkellä meidän on käytettävä demoniprosesseja.
Tämä artikkeli esittelee demoniprosessin käsitteen, demoniprosessin ohjelmointivaiheet, koodin toteutuksen ja demoniprosessin roolin. Auta meitä ymmärtämään taustaohjelmien toimintaperiaatteet jne.