Daemon

funus.net

Daemon w systemach uniksowych to proces działający w tle.

Najprotszy daemon można utworzyć następująco (program w języku C, testowany w systemie Debian Linux 4.0).

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
 
void daemon_proc()
{
 /* Zrób coś pożytecznego */
}
 
int main(int argc, char** argv)
{
 pid_t pid;
 
 /* fork() w celu utworzenia procesu potomnego */
 switch (pid = fork()) {
   case -1:
     /* Błąd */
     fprintf(stderr, "fork(): %s\n", strerror(errno));
     return EXIT_FAILURE;
 
   case 0:
     /* Proces potomny */
 
     /* Zamknij pliki standardowego wejścia i wyjścia */
     close(STDIN_FILENO);
     close(STDOUT_FILENO);
     close(STDERR_FILENO);
     daemon_proc();  /* tu będzie właściwa funkcjonalność */
     return EXIT_SUCCESS;
 
   default:
     /* Proces rodzicielski po utworzeniu procesu potomnego */
     return EXIT_SUCCESS;
 }
}