web-dev-qa-db-ja.com

Emacs、内部プロセスの強制終了、コマンド?

Emacsの内部プロセスを強制終了する方法は?たとえば、M-x Shellを実行します。

M-x list-processesで実行中のプロセスを確認できますが、このリストからプロセスを強制終了するにはどうすればよいですか?

31
Linkas

これにはデフォルトのキーバインディングはありません。ただし、pjammerの回答を参照してください-list-processes+には、(特に)killバインディングが含まれています C-k -また、Joao Tavoraの回答同じキーに対して)キルバインディングのみを提供します。

event_jrは、使用できるコメントで指摘しています M-:(kill-process) RET ---(currentバッファのプロセスを強制終了します。

より一般的には: M-:(kill-process PROCESS) RETここで、PROCESSは「プロセス、バッファ、またはプロセスまたはバッファの名前である可能性があります」。これらの名前はlist-processesの出力に表示されるとおりです。競合が発生した場合は、プロセス名がバッファ名よりも優先されます。したがって、プロセス名を指定する習慣をつけるのがおそらく最善です。

または、Emacs 23+には、topを実行するのに似た一般的なシステムプロセスマネージャー(M-x proced)があり、(任意の)信号を送信するためのデフォルトのバインディングがあります(k)。もちろん、どのプロセスに興味があるかは、そのリストではそれほど明白ではありません。


編集:遅くなるより遅くなる:)次のことが可能になります M-xkill-process RET 使用する(Emacs 26.1でテスト済み):

;; Enable M-x kill-process (to kill the current buffer's process).
(put 'kill-process 'interactive-form
     '(interactive
       (let ((proc (get-buffer-process (current-buffer))))
         (if (process-live-p proc)
             (unless (yes-or-no-p (format "Kill %S? " proc))
               (error "Process not killed"))
           (error (format "Buffer %s has no process" (buffer-name))))
         nil)))
26
phils

このスレッドは古くからありますが、これは私にとって完璧に機能する非常に迅速なハックです

(define-key process-menu-mode-map (kbd "C-k") 'joaot/delete-process-at-point)

(defun joaot/delete-process-at-point ()
  (interactive)
  (let ((process (get-text-property (point) 'tabulated-list-id)))
    (cond ((and process
                (processp process))
           (delete-process process)
           (revert-buffer))
          (t
           (error "no process at point!")))))
17
Joao Tavora

別の方法:

使用できます M-xeval-expression RET

次に次のように入力します:(delete-process "<name-of-the-process>") RET

"name-of-the-process"は以前に M-xlist-processes RET)。

繰り返してプロセスが強制終了されたことを確認します M-xlist-processes RET)。

以上です。

9
Paulo Tomé

新しいモードがあるか、アドオンの代わりに使用できます list process +

3
pjammer