|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Alexandr S. Agranovsky 2:5020/400 12 Mar 2003 19:53:53 To : Max Sivkov Subject : Re: Re: написать демона -------------------------------------------------------------------------------- Hi, Max Sivkov MS> привет MS> ну еще не мешало бы от консоли его отрубить MS> if (freopen("/dev/null", "r", stdin) == NULL) { MS> file://bug MS> } MS> if (freopen("/dev/null", "w", stdout) == NULL) { MS> file://bug MS> } MS> if (freopen("/dev/null", "w", stderr) == NULL) { MS> file://bug MS> } А если у нас третий-четвертый-пятый дескриптор остался от предыдущего процесса? Вот полный текст минимально корректной демонизации: signal(SIGTTOU, SIG_IGN); /* ignore terminal i/o signals */ signal(SIGTTIN, SIG_IGN); signal(SIGTSTP, SIG_IGN); if (fork()!=0) exit(0); /* daemonization */ setsid(); getrlimit(RLIMIT_NOFILE, &flim); /* close all files */ for (fd=0; fd<flim.rlim_max; fd++) /* maybe 16 will be enough? */ close(fd); chdir("/"); // при желании chdir("/tmp"); /* for some safety, do not remove the call above - if we don't have the /tmp directory? ;) */ open("/dev/null", O_NOCTTY | O_NONBLOCK | O_RDONLY); open("/dev/null", O_NOCTTY | O_NONBLOCK | O_WRONLY); dup(1); - --- Alexandr S. Agranovsky llb@udmnet.ru --- ifmail v.2.15dev5 * Origin: LLB, LLC (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/36423cd5259f.html, оценка из 5, голосов 10
|