Spec-Zone.ru › Elisp

Информация о процессах

Несколько функций возвращают информацию о процессах.

Команда: list-processes &optional query-only buffer

Эта команда выводит список всех живых процессов. Кроме того, в конце она удаляет все процессы со статусом ‘Exited’ или ‘Signaled’. Она возвращает nil.

Процессы отображаются в буфере с именем *Process List* (если вы не укажете другой буфер с помощью необязательного аргумента buffer); его основной режим — Process Menu mode.

Если query-only не-nil, в список включаются только процессы, флаг запроса которых не-nil. См. Запрос перед выходом.

Функция: process-list

Эта функция возвращает список всех процессов, которые не были удалены.

(process-list)
     ⇒ (#<process display-time> #<process shell>)
Функция: num-processors &optional query

Эта функция возвращает число процессоров — положительное целое число. Каждая доступная единица выполнения потока считается процессором. По умолчанию в это число входят доступные процессоры; его можно изменить, задав OMP_NUM_THREADS переменную окружения OpenMP. Если необязательный аргумент query равен current, эта функция игнорирует OMP_NUM_THREADS; если query равен all, функция также учитывает процессоры, установленные в системе, но недоступные текущему процессу.

Функция: get-process name

Эта функция возвращает процесс с именем name (строка) или nil, если такого процесса нет. Аргумент name также может быть объектом процесса; в этом случае возвращается он.

(get-process "shell")
     ⇒ #<process shell>
Функция: process-command process

Эта функция возвращает команду, выполненную для запуска process. Это список строк: первая строка — запущенная программа, остальные строки — аргументы, переданные программе. Для сетевого, последовательного подключения или подключения через канал возвращается либо nil, что означает, что процесс выполняется, либо t (процесс остановлен).

(process-command (get-process "shell"))
     ⇒ ("bash" "-i")
Функция: process-contact process &optional key no-block

Эта функция возвращает информацию о том, как было настроено сетевое, последовательное подключение или подключение через канал. Если key равен nil, для сетевого подключения возвращается (hostname service), для последовательного подключения — (port speed), а для подключения через канал — t. Для обычного дочернего процесса при вызове с nil key функция всегда возвращает t.

Если key равен t, возвращается полная информация о состоянии подключения, сервера, последовательного порта или канала, то есть список ключевых слов и значений, указанных в make-network-process, make-serial-process или make-pipe-process, за исключением того, что некоторые значения отражают текущее состояние, а не заданные вами параметры.

Для сетевого процесса значения включают (полный список см. в make-network-process):

:buffer

Соответствующее значение — буфер процесса.

:filter

Соответствующее значение — функция фильтра процесса. См. Функции фильтра процесса.

:sentinel

Соответствующее значение — функция-сентинел процесса. См. Сентинелы: обнаружение изменений состояния процесса.

:remote

Для подключения — адрес удалённого узла в внутреннем формате.

:local

Локальный адрес во внутреннем формате.

:service

Для сервера, если для service указано t, это значение является фактическим номером порта.

:local и :remote включаются, даже если они не были явно указаны в make-network-process.

Список ключей для последовательного подключения см. в make-serial-process и serial-process-configure. Список ключей для подключения через канал см. в make-pipe-process.

Если key — ключевое слово, функция возвращает соответствующее ему значение.

Если process — неблокирующий сетевой поток, настройка которого ещё не завершена, функция будет ждать её завершения. Если передан необязательный параметр no-block, функция вернёт nil вместо ожидания.

Функция: process-id process

Эта функция возвращает PID процесса process. Это целое число, отличающее процесс process от всех остальных процессов, выполняющихся на том же компьютере в данный момент. PID процесса назначается ядром операционной системы при запуске процесса и остаётся неизменным, пока процесс существует. Для сетевых, последовательных подключений и подключений через канал функция возвращает nil.

Функция: process-name process

Эта функция возвращает имя process в виде строки.

Функция: process-status process-name

Эта функция возвращает статус process-name в виде символа. Аргумент process-name должен быть процессом, буфером или именем процесса (строкой).

Возможные значения для действующего подпроцесса:

run

для выполняющегося процесса.

stop

для остановленного, но возобновляемого процесса.

exit

для завершившегося процесса.

signal

для процесса, получившего фатальный сигнал.

open

для открытого сетевого, последовательного подключения или подключения через канал.

closed

для закрытого сетевого, последовательного подключения или подключения через канал. Закрытое подключение нельзя открыть повторно, хотя, возможно, удастся установить новое подключение к тому же адресу.

connect

для неблокирующего подключения, ожидающего завершения установки.

failed

для неблокирующего подключения, установка которого завершилась неудачно.

listen

для сетевого сервера, ожидающего подключения.

nil

если process-name не является именем существующего процесса.

(process-status (get-buffer "*shell*"))
     ⇒ run

Для сетевого, последовательного подключения или подключения через канал process-status возвращает один из символов open, stop или closed. Последний означает, что другая сторона закрыла подключение или Emacs выполнил delete-process. Значение stop означает, что для подключения был вызван stop-process.

Функция: process-live-p process

Эта функция возвращает не-nil, если process активен. Процесс считается активным, если его статус — run, open, listen, connect или stop.

Функция: process-type process

Эта функция возвращает символ network для сетевого подключения или сервера, serial для подключения к последовательному порту, pipe для подключения через канал или real для подпроцесса, созданного для запуска программы.

Функция: process-exit-status process

Эта функция возвращает код завершения process или номер сигнала, который его завершил. (Чтобы определить, что именно возвращено, используйте результат process-status.) Если process ещё не завершился, значение равно 0. Для уже закрытых сетевых, последовательных подключений и подключений через канал значение равно 0 или 256 в зависимости от того, было ли подключение закрыто штатно или аварийно.

Функция: process-tty-name process &optional stream

Эта функция возвращает имя терминала, который process использует для связи с Emacs, или nil, если вместо pty используются каналы (см. process-connection-type в разделе Создание асинхронного процесса). По умолчанию функция возвращает имя терминала, если хотя бы один из стандартных потоков process использует терминал. Если stream равен stdin, stdout или stderr, функция возвращает имя терминала (или nil, как описано выше), который process использует именно для этого потока. Это позволяет определить, использует ли конкретный поток канал или pty.

Если process представляет программу, работающую на удалённом узле, функция возвращает имя локального терминала, связывающегося с process; имя терминала, используемого этой программой на удалённом узле, можно получить из свойства процесса remote-tty. Если process представляет сетевое, последовательное подключение или подключение через канал, функция всегда возвращает nil.

Функция: process-coding-system process

Эта функция возвращает конс-ячейку (decode . encode), описывающую системы кодирования, используемые для декодирования вывода от process и кодирования ввода для него (см. Системы кодирования).

Функция: set-process-coding-system process &optional decoding-system encoding-system

Эта функция задаёт системы кодирования, которые будут использоваться для последующего вывода от process и ввода для него. Для декодирования вывода подпроцесса используется decoding-system, а для кодирования ввода подпроцесса — encoding-system.

У каждого процесса также есть список свойств, в котором можно хранить различные связанные с ним значения.

Функция: process-get process propname

Эта функция возвращает значение свойства propname процесса process.

Функция: process-put process propname value

Эта функция устанавливает значение свойства propname процесса process равным value.

Функция: process-plist process

Эта функция возвращает список свойств процесса process.

Функция: set-process-plist process plist

Эта функция задаёт список свойств процесса process, равный plist.

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/Process-Information.html

Spec-Zone.ru

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