2012-05-16 30 views
27

Làm thế nào để giết một quá trình nội bộ trong Emacs? Ví dụ: tôi chạy M-x shell.Emacs, giết chết quá trình nội bộ, lệnh nào?

Tôi có thể kiểm tra quy trình đang chạy với M-x list-processes nhưng làm cách nào để tôi có thể xóa một quá trình khỏi danh sách này?

Trả lời

22

Không có ràng buộc khóa mặc định cho việc này; tuy nhiên xem câu trả lời của pjammer - list-processes+ bao gồm (trong số những thứ khác) một liên kết giết trên C-k - và cũng là câu trả lời của Joao Tavora - chỉ cung cấp một ràng buộc giết (cho cùng một khóa).

event_jr chỉ ra trong các ý kiến ​​mà bạn có thể sử dụng M:(kill-process)RET để giết chết quá trình hiện đệm của.

Tổng quát hơn: Bạn có thể sử dụng M:(kill-process PROCESS)RET, nơi PROCESS "có thể là một quá trình, một bộ đệm, hoặc tên của một quá trình hoặc đệm", với những cái tên đó là khi họ xuất hiện trong đầu ra của list-processes. Tên quy trình được ưu tiên hơn tên đệm, nếu bạn tình cờ có xung đột; do đó, có lẽ tốt nhất là nên có thói quen cung cấp tên quy trình.

Ngoài ra, Emacs 23+ có một người quản lý quá trình hệ thống chung (M-x proced) là hơn giống như chạy top, và trong đó không có một mặc định ràng buộc cho việc gửi (tùy ý) tín hiệu (k). Tất nhiên nó có thể ít rõ ràng trong danh sách đó mà xử lý bạn quan tâm đến

+5

nếu bạn đang ở trong bộ đệm mà có quá trình liên quan, sau đó '(giết quá trình)' sẽ làm việc mà không có một đặc tả bộ đệm. –

+0

điều này dường như không áp dụng nếu quá trình không có bộ đệm liên quan (nữa), giống như khi bạn đã xóa bộ đệm nhưng điều đó không kích hoạt quá trình giết chết thực tế, đôi khi có thể xảy ra. –

+0

Erik Allik: Tôi đã cập nhật câu trả lời. – phils

2

nó trông giống như có một chế độ mới hoặc thêm vào, bạn có thể sử dụng thay vì gọi list process +

8

Một cách khác:.

Bạn có thể sử dụng Mxeval-expressionRET

Sau đó gõ: (delete-process "<name-of-the-process>")RET

(nơi trước đây "name-of-the-process" được lấy từ M-xlist-processesRET).

Xác nhận rằng quá trình đã bị giết bằng cách lặp lại M-xlist-processesRET).

Và đó là nó.

13

chủ đề này là cổ nhưng đây là một hack rất nhanh chóng mà hoạt động hoàn hảo đối với tôi

(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!"))))) 
Các vấn đề liên quan