pid_t pid; int i; pid = fork (); if (pid == -1) return -1; else if (pid != 0) exit (EXIT_SUCCESS); if (setsid () == -1) return -1; if (chdir ("/") == -1) return -1; for (i = 0; i < NR_OPEN; i++) close (i); dup (0); /* stdout */ dup (0); /* stderror */
#include <sys/types.h
#include <sys/stat.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/fs.h>
int main (void)
{
/* создание нового сеанса и группы процессов */
/* установка в качестве рабочего каталога корневого каталога */
/* закрытие всех открытых файлов */
/* NR_OPEN это слишком, но это работает */
/* перенаправление дескрипторов файла 0,1,2 в /dev/null */
/* всякие действия демона... */
return 0;
}