Как убить внутренний процесс в Emacs? Например, я запускаю M-x shell
.Emacs, внутреннее убийство процесса, любая команда?
Я могу проверить запущенные процессы с помощью M-x list-processes
, но как я могу убить процесс из этого списка?
Как убить внутренний процесс в Emacs? Например, я запускаю M-x shell
.Emacs, внутреннее убийство процесса, любая команда?
Я могу проверить запущенные процессы с помощью M-x list-processes
, но как я могу убить процесс из этого списка?
Для этого нет привязки по умолчанию; однако см. ответ pjammer. list-processes+
включает (помимо всего прочего) привязку kill на C-k - а также ответ Жоао Таворы - который предоставляет только привязку к убийству (для того же ключа).
event_jr указывает в комментариях, что вы можете использовать M-:(kill-process)
RET убить процесс в тока буфера.
Более общо: Вы можете использовать M-:(kill-process PROCESS)
RET, где PROCESS
«может быть процессом, буфер, или имя процесса или буфера», с этими именами быть, как они появляются в выход list-processes
. Названия процессов имеют приоритет над именами буфера, если у вас возникнет конфликт; поэтому, вероятно, лучше всего иметь привычку поставлять имя процесса.
В качестве альтернативы, в Emacs 23+ есть менеджер общей системы процесса (M-x proced
), которая больше похож на top
работает, и который имеет по умолчанию привязки для отправки (произвольные) сигналов (к). Конечно, это может быть гораздо менее очевидны в этом перечислении, какой процесс вы заинтересованы в
, похоже, есть новый режим или добавить на вы можете использовать вместо называется list process +
Альтернативный способ:.
Вы можете использовать Mxeval-expression
RET
Затем введите: (delete-process "<name-of-the-process>")
RET
(где "name-of-the-process"
ранее был получен из М-хlist-processes
RET).
Убедитесь, что процесс был убит повторением М-хlist-processes
RET).
И все.
Эта нить древняя, но здесь очень быстрый Хак, который отлично работает для меня
(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!")))))
, если вы находитесь в буфере, который имеет процесс, связанный, то '(убить-процесс)' будет работать без буфер спецификация. –
это, похоже, не применяется, если процесс не имеет связанного буфера (больше), например, когда вы убили буфер, но это не вызвало убийство фактического процесса, что иногда бывает так. –
Эрик Алик: Я обновил ответ. – phils