デーモンの実装
システムにはdaemomという関数があり、手動でシミュレーションを行いました.
#include
#include
#include
#include
#include
#include
int daemonize(int nochdir,int noclose);
{
// ,
int pid = fork();
if(pid > 0)
{
exit(0);
}
if(pid == -1)
return -1;
// mode & ~umask
umask(0);
//
if(setsid() < 0)
{
perror("setsid");
return -1;
}
//
if(nochdir == 0)
{
chdir("/");
}
// , ,
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
//
if(noclose == 0)
{
open("/dev/null",O_RDWR);
open("/dev/null",O_RDWR);
open("/dev/null",O_RDWR);
}
}
int main()
{
// daemom
daemonize(0,0);
while(1);
return 0;
}