[c] demon linux

0

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

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 :]

1 użytkowników online, w tym zalogowanych: 0, gości: 1