Az alábbi mintaprogram Devin Watson munkája. BSD licenc alatt terjeszthető.
#include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <errno.h> #include <unistd.h> #include <syslog.h> #include <string.h> int main(void) { /* Our process ID and Session ID */ pid_t pid, sid; /* Fork off the parent process */ pid = fork(); if (pid < 0) { exit(EXIT_FAILURE); } /* If we got a good PID, then we can exit the parent process. */ if (pid > 0) { exit(EXIT_SUCCESS); } /* Change the file mode mask */ umask(0); /* Open any logs here */ /* Create a new SID for the child process */ sid = setsid(); if (sid < 0) { /* Log the failure */ exit(EXIT_FAILURE); } /* Change the current working directory */ if ((chdir("/")) < 0) { /* Log the failure */ exit(EXIT_FAILURE); } /* Close out the standard file descriptors */ close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); /* Daemon-specific initialization goes here */ /* The Big Loop */ while (1) { /* Do some task here ... */ sleep(30); /* wait 30 seconds */ } exit(EXIT_SUCCESS); }
Fordítás:
gcc -o demon demon.c
Futtatás:
./demon
Leállítás:
kiallall demon
</code>
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <string.h> int main(int argc, char* argv[]) { FILE *fp= NULL; pid_t pid = 0; pid_t sid = 0; int i = 0; pid = fork();// új folyamat elágaztatása if (pid < 0) { printf("elágaztatás sikertelen!\n"); exit(1); } if (pid > 0) { // a szülőfolyamat printf("A gyermekfolyamat azonosítója: %d \n", pid); exit(0); //A szülőfolyamat sikeres befejezése } umask(0);//fájlmód beállítása sid = setsid();//új munkamenet beállítása if(sid < 0) { exit(1); } close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); fp = fopen ("naplo.txt", "w+"); while (1) { sleep(1); fprintf(fp, "%d", i); fflush(fp); } fclose(fp); return (0); }
Fordítás:
gcc -o demon demon.c
Futtatás:
./demon