#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <syslog.h>
#include <signal.h>
#define MAXFD 64
void
daemon_init(const char * pname, char *workdir)
{
int i;
pid_t pid;
if((pid = fork()) != 0)
exit(0);
setsid();
signal(SIGHUP, SIG_IGN);
if((pid = fork()) != 0)
exit(0);
chdir(workdir);
umask(0);
for(i = 0; i < MAXFD; i++)
close(i);
}
本来chdir()是这样用的:chadir(“/"),发现工作目录改到根目录,改成工作目录就可以了。
#include <sys/types.h>
#include <unistd.h>
#include <syslog.h>
#include <signal.h>
#define MAXFD 64
void
daemon_init(const char * pname, char *workdir)
{
int i;
pid_t pid;
if((pid = fork()) != 0)
exit(0);
setsid();
signal(SIGHUP, SIG_IGN);
if((pid = fork()) != 0)
exit(0);
chdir(workdir);
umask(0);
for(i = 0; i < MAXFD; i++)
close(i);
}
本来chdir()是这样用的:chadir(“/"),发现工作目录改到根目录,改成工作目录就可以了。