Technology sharing

Android C Series: Linux Daemon

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. conceptus

Daemon (elf) processum est processus servitutis in Linux curriculum. Est processus longae vitae.

2. Exemplar

2.1 Daemon programmandi gradus

  1. Prolem crea, processum parentis exit, et omne opus in processu infantis perficitur: formaliter a continenti terminali separatum;
  2. Novam sessionem setsid() functionem in processu prolis creans, processus infantis omnino independens et sine potestate;
  3. Mutata hodiernam directorium radix Directory chdir()Munus: Ut ne systema fasciculi inaestimabilis occupet, eam etiam in alias vias mutare potes;
  4. Reset file permissionis larva: umask() functiones fasciculi hereditates crea- tionis vetat verba larva abnegare licentias quasdam ad processum daemonis flexibilitatem augendam;
  5. Tabella descriptor claudit: file aperta hereditaria non adhibebitur, quae opes systematis vastat et inaugurari non potest;
  6. Satus exsequens nucleum daemonis opus;
  7. Daemon exit processus.

2.2 Codicis exemplar

#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);
	/* 在此循环中可以实现守护进程的核心工作 */
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

Cum hoc programma curris, daemon processus fit et cum termino praesenti non amplius coniungitur. Non potes videre illud per mandatum ps. Insuper etiam videre potes quod claudens fenestram terminalem vel colligationem non afficit cursus daemonis.

3. Partes daemonis processus

Cur processus daemonis a moderante terminali separandus est?

Causa quare a termino separatum est, ne processus notitiae ab aliquo termino genitae intercipiatur, et informatio in executione in aliquo termino non exponetur.Cum in Linux, interfaces, per quam singula ratio cum utentibus communicat, terminatio appellatur, omnis processus qui ab hoc termino incipit cursus nititur.
Huic termino adnexo, hic terminatio dominium terminatio horum processuum appellatur. Multae tamen applicationes nostrae processus sine intermissionibus intermissionibus exire nolunt, ut databases, officia interretialia, officia ludorum, etc. In hoc tempore processibus daemonum uti necesse est.

4. Libri

Hic articulus inducit notionem processus daemonis, programmatio gradus processus daemonis, exsecutio codicis, et processus daemonis munus. Adiuva nos intelligamus principia operativa programmatum curriculorum, etc.