07-18-2008
I would build in a logic context so that you can be sure. For example, SIGHUP is a non-zero vector when a process is started. It is good practice to null the vector after one's fork/exec (in the child, of course), obviously to avoid the humiliation of having one's nice daemon code quit when the starter-upper terminates. So, then, your test could be "is my SIGHUP vector NULL?" and process accordingly. Use your OS facilities to good purpose, and let them help identify your context, too.
Last edited by fsahog; 07-18-2008 at 09:25 PM..
Reason: To make it better
10 More Discussions You Might Find Interesting
1. Programming
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... (2 Replies)
Discussion started by: s_chordia
2 Replies
2. 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
3. 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
4. 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
5. 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
6. 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
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. 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
9. UNIX for Dummies Questions & Answers
Hi,
When process listing, I came across a process running as user daemon.
daemon 23576 23574 0 07:32:04 ? 0:07 oracle (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root 27526 27444 1 07:38:43 ttyp5 0:00 grep 23574
why a process runs as user daemon, when it should be... (3 Replies)
Discussion started by: wilsonee
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
LEARN ABOUT FREEBSD
vfork
VFORK(2) BSD System Calls Manual VFORK(2)
NAME
vfork -- create a new process without copying the address space
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <unistd.h>
pid_t
vfork(void);
DESCRIPTION
The vfork() system call can be used to create new processes without fully copying the address space of the old process, which is horrendously
inefficient in a paged environment. It is useful when the purpose of fork(2) would have been to create a new system context for an
execve(2). The vfork() system call differs from fork(2) in that the child borrows the parent's memory and thread of control until a call to
execve(2) or an exit (either by a call to _exit(2) or abnormally). The parent process is suspended while the child is using its resources.
The vfork() system call returns 0 in the child's context and (later) the pid of the child in the parent's context.
The vfork() system call can normally be used just like fork(2). It does not work, however, to return while running in the child's context
from the procedure that called vfork() since the eventual return from vfork() would then return to a no longer existent stack frame. Be
careful, also, to call _exit(2) rather than exit(3) if you cannot execve(2), since exit(3) will flush and close standard I/O channels, and
thereby mess up the parent processes standard I/O data structures. (Even with fork(2) it is wrong to call exit(3) since buffered data would
then be flushed twice.)
RETURN VALUES
Same as for fork(2).
SEE ALSO
_exit(2), execve(2), fork(2), rfork(2), sigaction(2), wait(2), exit(3)
HISTORY
The vfork() system call appeared in 2.9BSD.
BUGS
To avoid a possible deadlock situation, processes that are children in the middle of a vfork() are never sent SIGTTOU or SIGTTIN signals;
rather, output or ioctl(2) calls are allowed and input attempts result in an end-of-file indication.
BSD
November 13, 2009 BSD