С GNU Emacs 23.2.1, который я установил из источников в 2 разных дистрибутивах GNU/Linux (CentOS 4.x и Ubuntu Hardy - оба с KDE 3.x)
Я делаю:
$ emacs --daemon
("emacs")
Starting Emacs daemon.
$ emacsclient -c
Waiting for Emacs...
Emacs запускается как положено. Затем я закрываю клиента. fuser /tmp/emacs${UID}/server
указывает, что сокет активен и процесс emacs --daemon
запущен.
$ emacsclient -c
Waiting for Emacs...
Emacs не запускается. fuser /tmp/emacs${UID}/server
указывает, что сокет устарел, а процесс emacs --daemon
больше не существует. Так что:
$ emacsclient -c
emacsclient: connect: Connection refused
emacsclient: No socket or alternate editor. Please use:
--socket-name
--server-file (or environment variable EMACS_SERVER_FILE)
--alternate-editor (or environment variable ALTERNATE_EDITOR)
Когда у меня работает хотя бы один клиент, я могу открывать и закрывать столько клиентов, сколько захочу.
Итак, мои вопросы:
- Кто-нибудь еще может увидеть это поведение?
- Есть ли способ сохранить сокет живым даже после выхода последнего клиента?
- Есть хороший способ проверить, позволит ли сокет открыть другой клиент?
- Почему сокет остается, если его больше нельзя использовать?
Редактировать: Кажется, что emacs --daemon
segfaults. Я выложил как баг 7149