Hi,
I have to write a daemon process, which performs certain operations in the background.
Now since it performs operations in the background, it should not display anything to the standard output.
The problem is that it still displays, text on standard output.
Can anyone tell me (it is urgent) how to avoid this.
I have written the following function to initialize the daemon code ...
int
daemon_init()
{
int pid, fd;
if \(getppid\(\) == 1\)
\{
goto out;
\}
#ifdef SIGTTOU
signal(SIGTTOU, SIG_IGN);
#endif
#ifdef SIGTTIN
signal(SIGTTIN, SIG_IGN);
#endif
#ifdef SIGTSTP
signal(SIGTSTP, SIG_IGN);
#endif
pid = fork\(\);
if \(pid < 0\)
\{
return -1;
\}
else if \(pid > 0\)
\{
/* In parent exit leaving the child to work */
exit\(0\);
\}
if \(setpgrp\(\) == -1\)
\{
return -1;
\}
signal\(SIGHUP, SIG_IGN\);
pid = fork\(\);
if \(pid < 0\)
\{
return -1;
\}
else if \(pid > 0\)
\{
/* first child exits */
exit\(0\);
\}
out:
/for (fd = 3; fd < NOFILE; fd++)
close(fd);/
/* In child detach from the parents session /
/*setsid();/
chdir("/");
umask(0);
return 0;
}