emacs process-management

Emacs, proceso interno de matanza, ¿alguna orden?



process-management (4)

¿Cómo matar un proceso interno en Emacs? Por ejemplo corro Mx shell .

Puedo verificar los procesos en ejecución con los procesos de Mx list-processes pero ¿cómo puedo eliminar un proceso de esta lista?


Este hilo es antiguo pero aquí hay un truco muy rápido que funciona perfectamente para mí.

(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!")))))


No hay un enlace de clave predeterminado para esto; sin embargo, vea la respuesta de pjammer - list-processes+ incluye (entre otras cosas) un enlace de muerte en Ck - y también la respuesta de Joao Tavora - que proporciona solo un enlace de muerte (para la misma clave).

event_jr señala en los comentarios que puedes usar M-: (kill-process) RET para finalizar el proceso del búfer actual .

De manera más general: puede usar M-: (kill-process PROCESS) RET , donde PROCESS "puede ser un proceso, un búfer o el nombre de un proceso o búfer", con esos nombres como aparecen en la salida de la list-processes . Los nombres de proceso tienen prioridad sobre los nombres de búfer, en caso de que tenga un conflicto; así que probablemente sea mejor tener el hábito de proporcionar el nombre del proceso.

Alternativamente, Emacs 23+ tiene un administrador de procesos del sistema general ( Mx proced ) que es más parecido a la ejecución de top , y que tiene un enlace predeterminado para el envío de señales (arbitrarias) ( k ). Por supuesto, puede ser mucho menos obvio en el listado en el que está interesado el proceso.

Edición: mejor tarde que nunca :) Lo siguiente permite el uso del Mx kill-process RET (probado en 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)))


Parece que hay un nuevo modo o complemento que puede usar en su lugar llamado proceso de lista +


Una forma alternativa:

Puedes usar Mx eval-expression RET

Luego escriba: (delete-process "<name-of-the-process>") RET

(donde el "name-of-the-process" se obtuvo previamente de Mx list-processes Process RET ).

Confirme que el proceso se eliminó repitiendo Mx list-processes RET ).

Y eso es.