τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Η διαδικασία Daemon (ξωτικό) είναι μια διαδικασία υπηρεσίας παρασκηνίου στο Linux Είναι μια διαδικασία με μεγάλη διάρκεια ζωής. Είναι συνήθως ανεξάρτητη από το τερματικό ελέγχου και εκτελεί περιοδικά ορισμένες εργασίες ή περιμένει να συμβούν ορισμένα συμβάντα.
chdir()
Λειτουργία: Για να αποτρέψετε την κατάληψη του αποπροσαρτήσιμου συστήματος αρχείων, μπορείτε επίσης να το αλλάξετε σε άλλες διαδρομές.#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);
/* 在此循环中可以实现守护进程的核心工作 */
}
Όταν εκτελείτε αυτό το πρόγραμμα, μετατρέπεται σε διαδικασία δαίμονα και δεν σχετίζεται πλέον με το τρέχον τερματικό. Δεν μπορείτε να το δείτε με την εντολή ps Πρέπει να εκτελέσετε την εντολή ps με την παράμετρο x για να το δείτε. Επιπλέον, μπορείτε επίσης να δείτε ότι το κλείσιμο του παραθύρου του τερματικού ή η αποσύνδεση δεν θα επηρεάσει τη λειτουργία του δαίμονα.
Γιατί η διαδικασία δαίμονα πρέπει να διαχωριστεί από το τερματικό ελέγχου;
Ο λόγος για τον οποίο διαχωρίζεται από το τερματικό είναι για να αποτραπεί η διακοπή της διαδικασίας από πληροφορίες που δημιουργούνται από οποιοδήποτε τερματικό και οι πληροφορίες του κατά την εκτέλεση δεν θα εμφανίζονται σε κανένα τερματικό.Δεδομένου ότι στο Linux, η διεπαφή μέσω της οποίας κάθε σύστημα επικοινωνεί με τους χρήστες ονομάζεται τερματικό, κάθε διαδικασία που ξεκινά να εκτελείται από αυτό το τερματικό θα βασίζεται σε
Προσαρτημένο σε αυτό το τερματικό, αυτό το τερματικό ονομάζεται τερματικό ελέγχου αυτών των διεργασιών Όταν το τερματικό ελέγχου είναι κλειστό, οι αντίστοιχες διεργασίες θα κλείσουν αυτόματα. Ωστόσο, πολλές από τις εφαρμογές μας δεν θέλουν να βγουν από τη διαδικασία χωρίς να απενεργοποιηθούν οι διακοπές, όπως βάσεις δεδομένων, υπηρεσίες web, υπηρεσίες παιχνιδιών κ.λπ. Αυτή τη στιγμή, πρέπει να χρησιμοποιήσουμε διαδικασίες δαίμονα.
Αυτό το άρθρο εισάγει την έννοια της διαδικασίας δαίμονα, τα βήματα προγραμματισμού της διαδικασίας δαίμονα, την υλοποίηση κώδικα και τον ρόλο της διαδικασίας δαίμονα. Βοηθήστε μας να κατανοήσουμε τις αρχές λειτουργίας των προγραμμάτων παρασκηνίου κ.λπ.