czy ktoś pisal/posiada materiały na temat jak napisać demona w c
przez demona rozumie ze program po uruchomieniu zaczyna pracować w tle...
0
0
daemon - sprawdz dokladnie co robi, to samo (albo wiecej mozna uzyskac ...
fork();
chdir("/");
setsid();
close(0); // fclose(stdin);
close(1); // fclose(stdout);
close(2); // fclose(stderr);
1
Kiedyś gdzieś w internecie znalazłem taką procedurę do demonizowania:
void Daemonize()
{
int i,lfp;
char str[10];
char* LOCK_FILE = "AGate.lock";
if(getppid()==1) return; /* already a daemon */
i=fork();
if (i<0) exit(1); /* fork error */
if (i>0) exit(0); /* parent exits */
/* child (daemon) continues */
setsid(); /* obtain a new process group */
for (i=getdtablesize();i>=0;--i) close(i); /* close all descriptors */
i=open("/dev/null",O_RDWR); dup(i); dup(i); /* handle standart I/O */
umask(027); /* set newly created file permissions */
chdir("/tmp"); /* change running directory */
lfp=open(LOCK_FILE,O_RDWR|O_CREAT,0640);
if (lfp<0) exit(1); /* can not open */
if (lockf(lfp,F_TLOCK,0)<0) exit(0); /* can not lock */
/* first instance continues */
sprintf(str,"%d\n",getpid());
write(lfp,str,strlen(str)); /* record pid to lockfile */
signal(SIGCHLD,SIG_IGN); /* ignore child */
signal(SIGTSTP,SIG_IGN); /* ignore tty signals */
signal(SIGTTOU,SIG_IGN);
signal(SIGTTIN,SIG_IGN);
signal(SIGHUP, SignalHandler); /* catch hangup signal */
signal(SIGTERM, SignalHandler); /* catch kill signal */
}
- dopisze jeszcze linka, ktory wpadl mi przy okazji: http:*menetekel.e-technik.fh-muenchen.de/skripten/unix/linux-daemon-howto.html [mf]
0
dziekuje za wszystkie odpowiedzi chetnie potestuje a pÓzniej podziele sie wrazeniami :]