Subject: Re: bug#1058: 23.0.60; emacs --daemon should not return until socket is ready

From: "Trent W. Buck" <[email-masked]>
Date: Fri, 3 Oct 2008 08:42:38 +1000

On Thu, Oct 02, 2008 at 05:32:32PM -0400, Stefan Monnier wrote:
> >> I could accept a similar patch, maybe, but first I need to understand
> >> why/where we currently "detach" so early.
> 
> > Where? in emacs.c:main, look for:
> >   if (argmatch (argv, argc, "-daemon", "--daemon", 5, NULL, &skip_args))
> >     {
> > #ifndef DOS_NT
> >       pid_t f = fork ();
> 
> Oh, thanks.  I somehow overlooked it.
> 
> > - in order to not make detaching an elisp function, and have to
> > deal with users trying to call it from different contexts - the
> > `fork' call for detaching needs to happen before some of the
> > initialization is run (although after my 2008-09-28 change it
> > might be possible to push it later), and also before .emacs is run
> > and before the server is started.
> 
> I see what you mean.  But I think forking so early is wrong: all
> the --eval and .emacs processing should take place "in the foreground"
> with input/output from stdin/stdout (like --batch).

What happens if .emacs asks questions?  Does 'emacs --daemon' require
a terminal?

Also, I'm currently using the following test to check whether the
running Emacs supports --daemon.  If you break it, please make some
other test work.

    emacs --batch -q --no-site-file --daemon &>/dev/null