Доступ к другим процессам
Помимо доступа к процессам, являющимся подпроцессами текущего сеанса 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-
Количество значительных страничных ошибок, вызванных процессом с момента его запуска. (При значительных страничных ошибках требуется чтение с диска, поэтому они обходятся дороже незначительных.)
cminfltcmajflt-
Как
minfltиmajflt, но с учётом количества страничных ошибок всех дочерних процессов данного процесса. utime-
Время, проведённое процессом в пользовательском контексте при выполнении кода приложения. Соответствующее value — временная метка Lisp (см. Время суток).
stime-
Время, проведённое процессом в системном (ядерном) контексте при обработке системных вызовов. Соответствующее value — временная метка Lisp.
time-
Сумма
utimeиstime. Соответствующее value — временная метка Lisp. cutimecstimectime-
Как
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