informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Proses daemon (elf) adalah proses layanan latar belakang di Linux. Proses ini biasanya tidak bergantung pada terminal kontrol dan secara berkala melakukan tugas tertentu atau menunggu terjadinya peristiwa tertentu.
chdir()
Fungsi: Untuk mencegah menempati sistem file yang tidak dapat dipasang, Anda juga dapat mengubahnya ke jalur lain;#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);
/* 在此循环中可以实现守护进程的核心工作 */
}
Saat Anda menjalankan program ini, program ini menjadi proses daemon dan tidak lagi dikaitkan dengan terminal saat ini. Anda tidak dapat melihatnya dengan perintah ps. Anda harus menjalankan perintah ps dengan parameter x untuk melihatnya. Selain itu, Anda dapat melihat bahwa menutup jendela terminal atau logout tidak akan mempengaruhi jalannya daemon.
Mengapa proses daemon perlu dipisahkan dari terminal pengendali?
Alasan mengapa ia dipisahkan dari terminal adalah untuk mencegah proses terganggu oleh informasi yang dihasilkan oleh terminal mana pun, dan informasinya selama eksekusi tidak akan ditampilkan di terminal mana pun.Karena di Linux, antarmuka yang melaluinya setiap sistem berkomunikasi dengan pengguna disebut terminal, setiap proses yang mulai berjalan dari terminal ini akan bergantung pada terminal.
Terlampir pada terminal ini, terminal ini disebut terminal kontrol dari proses-proses ini. Ketika terminal kontrol ditutup, proses terkait akan ditutup secara otomatis. Namun, banyak aplikasi kita yang tidak ingin keluar dari proses tanpa mematikan interupsi, seperti database, layanan web, layanan game, dll. Saat ini, kita perlu menggunakan proses daemon.
Artikel ini memperkenalkan konsep proses daemon, langkah-langkah pemrograman proses daemon, implementasi kode, dan peran proses daemon. Bantu kami memahami prinsip pengoperasian program latar belakang, dll.