Warum wird / tmp / emacs $ / server nach dem letzten Emacsclient-Exit veraltet?

974
Chen Levy

Mit GNU Emacs 23.2.1, das ich aus Quellen auf zwei verschiedenen GNU / Linux-Distributionen (CentOS 4.x und Ubuntu Hardy - beide mit KDE 3.x) installiert habe

Ich mache:

$ emacs --daemon ("emacs") Starting Emacs daemon. $ emacsclient -c Waiting for Emacs... 

Emacs startet wie erwartet. Dann schließe ich den Client. fuser /tmp/emacs$/serverzeigt an, dass der Socket aktiv ist und der emacs --daemonProzess ausgeführt wird.

$ emacsclient -c Waiting for Emacs... 

Emacs startet nicht. fuser /tmp/emacs$/serverzeigt an, dass der Socket veraltet ist und der emacs --daemonProzess nicht mehr vorhanden ist. Und so:

$ 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) 

Wenn ich mindestens einen Client aktiv betreibe, kann ich so viele andere Clients öffnen und schließen, wie ich möchte.

Meine Fragen sind also:

  1. Kann jemand anderes dieses Verhalten sehen?
  2. Gibt es eine Möglichkeit, den Socket am Leben zu erhalten, nachdem der letzte Client beendet wurde?
  3. Gibt es eine gute Möglichkeit zu überprüfen, ob der Socket einen anderen Client öffnen kann?
  4. Warum bleibt die Steckdose herum, wenn sie nicht mehr verwendet werden kann?

Edit: Es scheint, dass sich emacs --daemonsegfaults. Ich habe es als Bug 7149 gepostet

0

2 Antworten auf die Frage

1
kmarsh

Kann jemand anderes dieses Verhalten sehen?

Ja, obwohl mein Arbeitsstil anders ist. Ich habe (Server-Start) in meiner .emacs-Datei, anstatt Befehlszeilenargumente zu verwenden.

Gibt es eine Möglichkeit, den Socket am Leben zu erhalten, nachdem der letzte Client beendet wurde?

Verwenden Sie Cx #, um Clientpuffer sauber zu schließen?

Gibt es eine Möglichkeit, den Socket am Leben zu erhalten, nachdem der letzte Client beendet wurde?

Ich finde, dass ich Mx Server auf einem Emacs starten muss, der seit ein paar Tagen oder länger aktiv ist. Es hält es nicht gerade am Leben, sondern erstellt es neu.

Warum bleibt die Steckdose herum, wenn sie nicht mehr verwendet werden kann?

Ich glaube das ist ein Fehler.

1. Danke für die Bestätigung. Können Sie bitte Ihren Arbeitsablauf neben "(Server-Start)" beschreiben? 2. Nein, aber selbst wenn, scheint es nicht zu helfen. Noch mit "Cx 5 0" beenden; 3. Nicht zutreffen, es gilt. 4. Ich werde prüfen, ob dieser Fehler gemeldet wird. Chen Levy vor 14 Jahren 0
Die andere Hälfte meines Workflows ist ein Bash-Alias ​​für emacsclient, der E / A umleitet und emacsclient beim Starten des neuen Puffers ruhig in den Hintergrund stellt. kmarsh vor 14 Jahren 0
0
fmaker

Ich konnte dieses Problem überwinden, indem ich das Verzeichnis löschte, das den Socket enthielt. Ich rannte:

strace emacsclient -c 

und sah diese Zeilen:

stat("/tmp/emacs1000/server", ) = 0 connect(3,, 23) = -1 ECONNREFUSED (Connection refused) 

Das Verzeichnis, in dem sich die Socket-Datei befindet, wird angezeigt. Alles, was ich tun musste, war dieses Verzeichnis zu löschen:

rm -rf /tmp/emacs1000