12-26-2001
Daemon process
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;
}
10 More Discussions You Might Find Interesting
1. Programming
This is gonna seem really silly to almost evryone here - but I need to know :
what is a daemon process?
Thanks (6 Replies)
Discussion started by: Kanu77
6 Replies
2. UNIX for Advanced & Expert Users
My daemon process is the child of init and init has the responsibility to remove it, once it turns zombie. But I want to ask why the daemon process which is child of init turns zombie in the first place. What measures I have to take to avoid this?
rish (1 Reply)
Discussion started by: rish2005
1 Replies
3. Linux
how i will write the daemon process,if any body have sample daemon process send me. (1 Reply)
Discussion started by: suresh_rupineni
1 Replies
4. Shell Programming and Scripting
Hello,
I need to run a command on remote Linux using the ssh command from my local machine. I am able to execute the command on remote machine using ssh but it's behaving strangely.
The command is supposed to start a daemon process on remote linux box and the control should return back to me... (5 Replies)
Discussion started by: nitinshukla
5 Replies
5. UNIX for Dummies Questions & Answers
Hello,
I am new to this forum and this is my first post here...
I have never worked on either Pro*C or Multithreading..Now, i have to write a Pro*C, Multithreading daemon process.. I dont know where to start.. Can anybody help me with examples?
1. need to write a Pro*C multithreading... (0 Replies)
Discussion started by: kachiraju
0 Replies
6. Programming
I have a scenario where I need to find if a process is a daemon process or not. This check needs to be done from within the process. I know there are no direct API's to do so. I have explored these options.
1. ctermid() - this can be unsuccessful as per the man pages
2. int devtty; if ((devtty... (7 Replies)
Discussion started by: vino
7 Replies
7. Shell Programming and Scripting
Dear Unix Gurus,
Plz provide major diff between background process and daemon process.
Is it control available for daemon process?. (3 Replies)
Discussion started by: kkl
3 Replies
8. UNIX for Advanced & Expert Users
Hi All,
I am facing problem in launching a application with the help of a daemon process. Actually the application is based on command line that reads various commands for controlling the application from the console and accordingly executes those commands. The application always interact with... (3 Replies)
Discussion started by: gopallinux
3 Replies
9. Shell Programming and Scripting
Hi,
HI ,
I have a simple script that moves files from one folder to another folder, I have already done the open-ssh server settings and the script is working fine and is able to transfer the files from one folder to another but right now I myself execute this script by using my creditianls to... (3 Replies)
Discussion started by: nks342
3 Replies
10. Programming
I wish to make a process run in the background, but only one instance of it, and not many,
so when the program is loaded, it has to check whether another instance of the same
program is running and if so to exit. How do I do this ? (4 Replies)
Discussion started by: sundaresh
4 Replies
setpgid(2) System Calls Manual setpgid(2)
NAME
setpgid(), setpgrp2() - set process group ID for job control
SYNOPSIS
DESCRIPTION
The and system calls cause the process specified by pid to join an existing process group or create a new process group within the session
of the calling process. The process group ID of the process whose process ID is pid is set to pgid. If pid is zero, the process ID of the
calling process is used. If pgid is zero, the process ID of the indicated process is used. The process group ID of a session leader does
not change.
is provided for backward compatibility only.
Security Restrictions
Some or all of the actions associated with this system call are subject to compartmental restrictions.
See compartments(5) for more information about compartmentalization on systems that support that feature. Compartmental restrictions can
be overridden if the process possesses the privilege (COMMALLOWED). Processes owned by the superuser may not have this privilege. Pro-
cesses owned by any user may have this privilege, depending on system configuration.
See privileges(5) for more information about privileged access on systems that support fine-grained privileges.
RETURN VALUE
and return the following values:
Successful completion.
Failure.
is set to indicate the error.
ERRORS
If or fails, is set to one of the following values.
The value of pid matches the process ID of a child process of the calling process and the child process has successfully executed
one of the exec(2) functions.
The value of pgid is less than zero or is outside the range of valid process group ID values.
The process indicated by
pid is a session leader.
The value of pid is valid but matches the process ID of a child process of the calling process, and the child process is not in
the same session as the calling process.
The value of pgid does not match the process ID of the process indicated by pid and there is no process with a process group ID
that matches the value of pgid in the same session as the calling process.
The value of pid does not match the process ID of the calling process or of a child process of the calling process.
AUTHOR
and were developed by HP and the University of California, Berkeley.
SEE ALSO
bsdproc(3C), exec(2), exit(2), fork(2), getpid(2), kill(2), setsid(2), signal(2), privileges(5), termio(7).
STANDARDS CONFORMANCE
setpgid(2)