Giống như Tikhon đã đề cập, (start-process)
là con đường để đi. Trong trường hợp bạn không muốn tạo bộ đệm nhưng vẫn muốn phản ứng với trạng thái quá trình nền, bạn cũng có thể sử dụng (set-process-sentinel)
. Đây là một ví dụ sửa đổi tôi lấy từ projector
gói của tôi :
(set-process-sentinel (start-process "process-name" nil "command") #'output-message-sentinel)
(defun output-message-sentinel (process msg)
(when (memq (process-status process) '(exit signal))
(message (concat (process-name process) " - " msg))))
Từ mô tả chức năng Emacs:
(set-process-sentinel PROCESS SENTINEL)
Give PROCESS the sentinel SENTINEL; nil for default.
The sentinel is called as a function when the process changes state.
It gets two arguments: the process, and a string describing the change.
Các trang hướng dẫn GNU trên Processes khá tốt để biết thêm thông tin.
start-process
cho một lệnh sudo? Tôi cố gắng gói cuộc gọi của tôi đểstart-process
ở(let ((default-directory "/sudo::")) ... )
nhưng nó đã không làm việc cho tôi.