Доступ к другим процессам
Помимо доступа и управления процессами, являющимися подпроцессами текущей сессии Emacs, программы Emacs Lisp также могут получать доступ к другим процессам, выполняющимся на том же компьютере. Мы называем их системами процессов, чтобы отличать их от подпроцессов Emacs.
Emacs предоставляет несколько примитивов для доступа к системным процессам. Не все платформы поддерживают эти примитивы; на тех, которые не поддерживают, эти примитивы возвращают nil.
- Функция: list-system-processes
Эта функция возвращает список всех процессов, выполняющихся в системе. Каждый процесс идентифицируется своим PID, числовым идентификатором процесса, присваиваемым ОС и отличающим процесс от всех других процессов, выполняющихся на одном компьютере одновременно.
- Функция: process-attributes pid
-
Эта функция возвращает список атрибутов для процесса, указанного его идентификатором процесса pid. Каждая ассоциация в списке имеет вид
(key . value), где key обозначает атрибут, а value — значение этого атрибута. Различные атрибуты key, которые может вернуть эта функция, перечислены ниже. Не все платформы поддерживают все эти атрибуты; если атрибут не поддерживается, его ассоциация не будет отображаться в возвращаемом списке.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 — число с плавающей запятой от 0 до 100.
pmem-
Процент установленной на компьютере физической памяти, используемой резидентным набором процесса. Значение — число с плавающей запятой от 0 до 100.
argsСтрока командной строки, с которой был запущен процесс. В этой строке отдельные аргументы командной строки разделяются пробелами; пробелы, которые встроены в аргументы, цитируются соответствующим образом для оболочки системы: экранируются символами обратной косой черты в GNU и Unix и заключаются в двойные кавычки в Windows. Таким образом, эту строку командной строки можно непосредственно использовать в таких примитивах, как
shell-command.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/System-Processes.html