diff options
Diffstat (limited to 'lib-src')
| -rw-r--r-- | lib-src/emacsserver.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib-src/emacsserver.c b/lib-src/emacsserver.c index 5e233148851..cf7a6dd78d5 100644 --- a/lib-src/emacsserver.c +++ b/lib-src/emacsserver.c @@ -282,13 +282,15 @@ main () } signal (SIGTERM, msgcatch); signal (SIGINT, msgcatch); - /* If parent goes away, remove message box and exit */ - if (p == 0) + if (p > 0) { + /* This is executed in the original process that did the fork above. */ + /* Get pid of Emacs itself. */ p = getppid (); setpgrp (); /* Gnu kills process group on exit */ while (1) { + /* Is Emacs still alive? */ if (kill (p, 0) < 0) { msgctl (s, IPC_RMID, 0); @@ -298,6 +300,7 @@ main () } } + /* This is executed in the child made by forking above. */ while (1) { if ((fromlen = msgrcv (s, msgp, BUFSIZ - 1, 1, 0)) < 0) |
