in reply to Re: Re: Re: how to make a demon in perl?
in thread how to make a demon in perl?

Right - the child inherits the file descriptors of the parent, which is why you need to close them. So you can either close them before the fork, which will close them both for the parent and the child, or after the fork, which will close them for the child, but leave them open for the parent.

Perhaps I don't understand your question? Why wouldn't the child in this case continue running after the disconnect?

-- Dan

  • Comment on Re: Re: Re: Re: how to make a demon in perl?

Replies are listed 'Best First'.
5 x Re: how to make a demon in perl?
by blm (Hermit) on Oct 01, 2002 at 13:59 UTC

    I can see what is happening I am just having trouble understanding why it works

    I figured the order was important. I thought if the child inherited normal STDIN etc then redirected them it would be the same as running a normal script and trying to detach by redirecting STDIN etc (see 1). The child wouldn't be detached and would die on SIGHUP or whatever.

    I might just have to accept that I see it but don't fully understand it. Thanks for your posts though!


    (1) I have tried the daemon script without fork and it doesn't work since just doing the redirecting of file descriptors of a process doesn't seem to detach.

    --blm--
      Ok - I think I see your confusion. As far as I know, there is no connection between file descriptiors and signals. Meaning, the fact that you close redirect your STDIN/STDERR in your script doesn't stop the shell from sending you a SIGHUP when the parent exits. You have to disassociate yourself from your parent process, which is what the setsid call does (I think).

      -- Dan