Spec-Zone.ru › Elisp

Доступ к другим процессам

Помимо доступа к процессам, являющимся подпроцессами текущего сеанса Emacs, и управления ими, программы на Emacs Lisp могут также обращаться к другим процессам. Чтобы отличать их от подпроцессов Emacs, мы называем их системными процессами.

Emacs предоставляет несколько примитивов для доступа к системным процессам. Не все платформы поддерживают эти примитивы; на платформах, где они не поддерживаются, эти примитивы возвращают nil.

Функция: list-system-processes

Эта функция возвращает список всех процессов, работающих в системе. Каждый процесс идентифицируется своим PID — числовым идентификатором процесса, который назначается ОС и отличает этот процесс от всех остальных процессов, работающих на том же компьютере в то же время.

Если default-directory указывает на удалённый хост, возвращаются процессы этого хоста.

Функция: process-attributes pid

Эта функция возвращает алist атрибутов процесса, заданного его идентификатором pid. Каждая пара в alist имеет вид (key . value), где key обозначает атрибут, а value — его значение. Ниже перечислены различные key атрибутов, которые может возвращать эта функция. Не все платформы поддерживают все эти атрибуты; если атрибут не поддерживается, соответствующая пара не появится в возвращаемом alist.

Если default-directory указывает на удалённый хост, pid рассматривается как процесс этого хоста.

euid

Эффективный идентификатор пользователя, от имени которого был запущен процесс. Соответствующее value — число. Если процесс был запущен тем же пользователем, который работает в текущем сеансе Emacs, значение совпадает с тем, которое возвращает user-uid (см. Идентификация пользователя).

user

Имя пользователя, соответствующее эффективному идентификатору пользователя процесса; строка.

egid

Идентификатор группы эффективного пользователя; число.

group

Имя группы, соответствующее идентификатору группы эффективного пользователя; строка.

comm

Имя команды, выполняемой в процессе. Это строка, обычно содержащая имя исполняемого файла процесса без начальных каталогов. Однако некоторые специальные системные процессы могут сообщать строки, не соответствующие исполняемому файлу программы.

state

Код состояния процесса. Это короткая строка, кодирующая состояние процесса с точки зрения планирования. Ниже приведён список наиболее часто встречающихся кодов:

"D"

непрерываемое ожидание (обычно ввод-вывод)

"R"

выполняется

"S"

прерываемое ожидание (ожидание события)

"T"

остановлен, например сигналом управления заданиями

"Z"

зомби: процесс, который завершился, но не был удалён родительским процессом

Полный список возможных состояний см. на странице руководства команды ps.

ppid

Идентификатор родительского процесса; число.

pgrp

Идентификатор группы процессов данного процесса; число.

sess

Идентификатор сеанса процесса. Это число, являющееся идентификатором процесса, который выступает лидером сеанса данного процесса.

ttname

Строка с именем управляющего терминала процесса. В системах Unix и GNU это обычно имя файла соответствующего устройства терминала, например /dev/pts65.

tpgid

Числовой идентификатор группы процессов переднего плана, использующей терминал процесса.

minflt

Количество незначительных страничных ошибок, вызванных процессом с момента его запуска. (Незначительные страничные ошибки не связаны с чтением с диска.)

majflt

Количество значительных страничных ошибок, вызванных процессом с момента его запуска. (При значительных страничных ошибках требуется чтение с диска, поэтому они обходятся дороже незначительных.)

cminflt
cmajflt

Как minflt и majflt, но с учётом количества страничных ошибок всех дочерних процессов данного процесса.

utime

Время, проведённое процессом в пользовательском контексте при выполнении кода приложения. Соответствующее value — временная метка Lisp (см. Время суток).

stime

Время, проведённое процессом в системном (ядерном) контексте при обработке системных вызовов. Соответствующее value — временная метка Lisp.

time

Сумма utime и stime. Соответствующее value — временная метка Lisp.

cutime
cstime
ctime

Как utime, stime и time, но с учётом времени всех дочерних процессов данного процесса.

pri

Числовой приоритет процесса.

nice

Значение nice процесса; число. (Процессы с меньшими значениями nice получают более высокий приоритет при планировании.)

thcount

Количество потоков в процессе.

start

Время запуска процесса в виде временной метки Lisp.

etime

Время, прошедшее с момента запуска процесса, в виде временной метки Lisp.

vsize

Размер виртуальной памяти процесса в килобайтах.

rss

Размер резидентного набора процесса — количество килобайтов, занимаемых процессом в физической памяти компьютера.

pcpu

Доля процессорного времени, использованного процессом с момента его запуска. Соответствующее value — неотрицательное число с плавающей точкой. Хотя теоретически на многоядерной платформе это число может превышать 100, обычно оно меньше 100, поскольку Emacs, как правило, использует один поток.

pmem

Доля общей физической памяти компьютера, занимаемая резидентным набором процесса. Значение — число с плавающей точкой от 0 до 100.

args

Командная строка, с которой был запущен процесс. Это строка, в которой отдельные аргументы командной строки разделены пробелами; пробельные символы внутри аргументов экранируются в соответствии с правилами командной оболочки системы: символами обратной косой черты в GNU и Unix и заключением в двойные кавычки в Windows. Таким образом, эту строку командной строки можно непосредственно использовать в таких примитивах, как shell-command.

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/System-Processes.html

Spec-Zone.ru

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