The various wikis are somewhat out of date. For example, this shows how to create custom functions that do what save-buffers-kill-emacs does: https://www.emacswiki.org/emacs/EmacsAsDaemon Also, the documentation for kill-buffers and save-buffers-kill-emacs makes no mention of the lock file. Anyway, when I do "emacs --daemon -Q", "emacsclient -e 'save-buffers-kill-emacs'" worked fine; but when I run the daemon without the "-Q", the "emacs -e 'save-buffers-kill-emacs'" command just sits there with no output. The problem seems to be that I have this in my .emacs: (setq kill-emacs-query-functions (cons (lambda () (yes-or-no-p "Really kill Emacs? ")) kill-emacs-query-functions)) which sets kill-emacs-query-functions to: ((lambda nil (yes-or-no-p "Really kill Emacs? ")) desktop-kill) [I don't know where the "desktop-kill" comes from] I often accidentally do ^X-^C when I run emacs in non-daemon mode, so I'd like to keep this hook, or something similar. Is there a better way of getting an "are you sure" message that works with both daemon and non-daemon?