Spec-Zone.ru › Elisp

Удаление процессов

Удаление процесса немедленно отключает Emacs от подпроцесса. Процессы удаляются автоматически после завершения, но не обязательно сразу. Вы можете явно удалить процесс в любое время. Если вы явно удалите завершившийся процесс до его автоматического удаления, это не причинит вреда. Удаление работающего процесса отправляет сигнал для его завершения (а также завершения его дочерних процессов, если они есть) и вызывает обработчик состояния процесса. См. Обработчики состояния: обнаружение изменений состояния процесса.

После удаления процесса сам объект процесса продолжает существовать, пока на него ссылаются другие объекты Lisp. Все примитивы Lisp, работающие с объектами процессов, принимают удалённые процессы, однако примитивы, выполняющие ввод-вывод или отправляющие сигналы, сообщат об ошибке. Метка процесса продолжает указывать на то же место, что и раньше, обычно в буфере, куда вставлялся вывод процесса.

Пользовательская опция: delete-exited-processes

Эта переменная управляет автоматическим удалением завершившихся процессов (в результате вызова exit или получения сигнала). Если её значение равно nil, процессы продолжают существовать, пока пользователь не выполнит list-processes. В противном случае они удаляются сразу после завершения.

Функция: delete-process &optional process

Эта функция удаляет процесс, завершая его с помощью сигнала SIGKILL, если процесс выполнял программу. Аргументом может быть процесс, имя процесса, буфер или имя буфера. (Буфер или имя буфера обозначает процесс, который возвращает get-buffer-process, а отсутствующий аргумент process или значение nil означает, что следует завершить процесс текущего буфера.) Вызов delete-process для работающего процесса завершает его, обновляет состояние процесса и немедленно запускает обработчик состояния. Если процесс уже завершился, вызов delete-process не влияет на его состояние и на запуск обработчика состояния (который произойдёт рано или поздно).

Если объект процесса представляет сетевое, последовательное или канальное соединение, его состояние меняется на closed; в противном случае оно меняется на signal, если только процесс уже не завершился. См. process-status.

(delete-process "*shell*")
     ⇒ nil

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Deleting-Processes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API