1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yuanhack-yhevents

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
yhdaemon.c 1.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Yuan Hong Отправлено 03.12.2015 09:38 407bae3
#include "yhdaemon.h"
extern int daemon_proc; /* defined in error.c */
typedef void (*sighandler_t)(int);
sighandler_t
Signal(int signo, sighandler_t func) /* for our signal() function */
{
sighandler_t sigfunc;
if ( (sigfunc = signal(signo, func)) == SIG_ERR)
err_sys("signal error");
return(sigfunc);
}
pid_t
Fork(void)
{
pid_t pid;
if ( (pid = fork()) == -1)
err_sys("fork error");
return(pid);
}
int
Open(const char *pathname, int flags)
{
int fd;
fd = open(pathname, flags);
if (fd < 0)
err_sys("open error");
return fd;
}
void
Dup2(int fd1, int fd2)
{
if (dup2(fd1, fd2) == -1)
err_sys("dup2 error");
}
void
Close(int fd)
{
if (close(fd) < 0)
err_sys("close error");
}
void
daemoninit(const char *pname, int facility, int chdir_root, int close_012)
{
pid_t pid;
if ( (pid = Fork()) != 0)
exit(0); /* parent terminates */
/* 41st child continues */
setsid(); /* become session leader */
Signal(SIGHUP, SIG_IGN);
if ( (pid = Fork()) != 0)
exit(0); /* 1st child terminates */
/* 42nd child continues */
if (chdir_root)
chdir("/"); /* change working directory */
umask(0); /* clear our file mode creation mask */
if (close_012) {
int fd = Open("/dev/null", O_RDWR);
Dup2(fd, 0);
Dup2(fd, 1);
Dup2(fd, 2);
if (fd > 2)
Close(fd);
}
daemon_proc = 1; /* for our err_XXX() functions */
openlog(pname, LOG_PID, facility);
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/yuanhack-yhevents.git
git@api.gitlife.ru:oschina-mirror/yuanhack-yhevents.git
oschina-mirror
yuanhack-yhevents
yuanhack-yhevents
master