2015-01-22 3 views
1

필자는 이맥스가 열린 상태에서 항상 데스크톱을 사용하고있다. 원격으로 작업중인 컴퓨터의 프로세스에 연결하고 싶습니다. ssh 및 emacsclient를 사용하여이 작업을 수행 할 수 있습니다. 하지만 원래 프로세스가 중단되지 않고 완전히 종료 할 수는 없습니다. 그러나 나는 SSH를 죽일 수있는 방법을 찾을 수 없습니다,이 작품X 포워딩으로 원격 이맥스에 연결하기

$ ssh -XC [email protected]

$ emacsclient -s foo -e "(make-frame-on-display \"$DISPLAY\")"

: 나는 '갑'의 서버 이름으로 이맥스 프레임에 연결하기 위해 다음과 같은 일을 해요 연결을 원래 프로세스를 손상시키지 않고. 일부 백그라운드 프로세스가 여전히 연결되어있는 것처럼 보이며 원격 연결을 종료 한 후에 발생하는 모든 프로세스가 모든 것을 꺼냅니다. 누구든지이 방법을 사용하는 더 좋은 방법을 알고 있습니까?

답변

1

내가 X11 연결이 예기치 않게 끊어졌습니다 때 이맥스 충돌이 발생 a Gtk+ bug 막아야으로 실행 된 문제를 해결합니다.

다른 X 도구 키트를 사용하기 위해 다시 컴파일하면 문제가 해결되었습니다.

./configure --with-x-toolkit=lucid 
+0

@phils 인상 편집에 감사드립니다. –

1

나는 당신이 말하는 것을 알고 있으며, 오히려 이상하게도 현재 시스템에서 다시 만들 수 없습니다. 왜 그런지 모르겠습니다. 그러나 ...

이를 방지 할 수있는 고전적인 해결 방법은 서브 쉘에서 프로세스를 시작하는 것입니다 :

$ (emacs &) 

보다는 :

$ emacs & 

nohupdisown 같은 것들이있다있는 당신은 사용 가능할 수도 안 할 수도 있지만, 서브 쉘 방식은 간단하고 항상 나를 신뢰할 수 있습니다.

또한 연결의 로컬 측면에서 프로세스를 시작할 수 :

$ ssh -XC [email protected] -f emacs --daemon=foo 
$ ssh -XC [email protected] -f emacsclient -s foo -c 
+1

(emacs &) 솔루션이 나를 위해 작동하지 않았습니다. nohup 및 disown도이 문제를 수정하지 않았습니다. 그러나'ssh -XC ej @ tower -f emacs - daemon = foo' 제안을 시도했을 때 오류가 발생했습니다. "경고 : 오랫동안 서있는 Gtk + 버그로 인해 http://bugzilla.gnome.org/show_bug.cgi?id=85715 데몬 모드에서 실행할 때 이맥스가 충돌 할 수 있으며 X11 연결이 예기치 않게 손실 될 수 있습니다. 구성된 이맥스 사용 --with-x-toolkit = lucid를 사용하면이 문제가 발생하지 않습니다. " 나는 지금 그 픽스를 시도하고있다. –

+1

--with-x-toolkit = lucid로 이맥스를 다시 컴파일 한 후에이 문제가 발생하지 않는다. 그래서 Gtk +는 분명히 범인이었고, 당신의 제안은 쉽게 명백하게 만들었습니다, 감사합니다! 버그를 참조하기 위해 답을 편집하면 대답이 승인 됨으로 표시됩니다. –

+0

그래, 결국 문제의 본질을 오해 한 것 같습니다. 솔루션을 새로운 대답으로 게시하십시오. 그러면 새로운 대답을 수락 할 수 있습니다. – phils

관련 문제