Помимо доступа к процессам, являющимся дочерними процессами текущего сеанса Emacs, и управления ими, программы на Emacs Lisp могут также получать доступ к другим процессам. Мы называем их системными процессами, чтобы отличать от дочерних процессов Emacs.
Emacs предоставляет несколько примитивов для доступа к системным процессам. Не все платформы поддерживают эти примитивы; на тех, где они не поддерживаются, эти примитивы возвращают nil.
Эта функция возвращает список всех процессов, работающих в системе. Каждый процесс идентифицируется своим PID — числовым идентификатором процесса, который назначается ОС и отличает данный процесс от всех остальных процессов, работающих на той же машине в то же время.
Если default-directory указывает на удалённый хост, возвращаются процессы этого хоста.
Эта функция возвращает ассоциативный список атрибутов для процесса, заданного его идентификатором pid. Каждая пара в ассоциативном списке имеет вид (ключ . значение), где ключ обозначает атрибут, а значение — значение этого атрибута. Различные ключи атрибутов, которые может возвращать эта функция, перечислены ниже. Не все платформы поддерживают все эти атрибуты; если атрибут не поддерживается, его пара не появится в возвращаемом ассоциативном списке.
Если default-directory указывает на удалённый хост, pid рассматривается как процесс этого хоста.
euidЭффективный идентификатор пользователя, вызвавшего процесс. Соответствующее значение — число. Если процесс был вызван тем же пользователем, который запустил текущий сеанс 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Время, затраченное процессом в пользовательском контексте на выполнение кода приложения. Соответствующее значение — временная метка Lisp (см. Время суток).
stimeВремя, затраченное процессом в контексте системы (ядра) на обработку системных вызовов. Соответствующее значение — временная метка Lisp.
timeСумма utime и stime. Соответствующее значение — временная метка Lisp.
cutimecstimectimeКак utime, stime и time, но включают время всех дочерних процессов данного процесса.
priЧисловой приоритет процесса.
niceЗначение nice процесса, число. (Процессы с меньшими значениями nice получают более благоприятное планирование.)
thcountКоличество потоков в процессе.
startВремя запуска процесса в виде временной метки Lisp.
etimeВремя, прошедшее с момента запуска процесса, в виде временной метки Lisp.
vsizeРазмер виртуальной памяти процесса, измеряемый в килобайтах.
rssРазмер резидентного набора процесса — количество килобайт, занимаемых процессом в физической памяти машины.
pcpuПроцент использования процессорного времени процессом с момента его запуска. Соответствующее значение — неотрицательное число с плавающей запятой. Хотя теоретически это число может превышать 100 на многоядерной платформе, обычно оно меньше 100, поскольку Emacs, как правило, однопоточный.
pmemПроцент от общего объёма физической памяти, установленной на машине, используемый резидентным набором процесса. Значение — число с плавающей запятой от 0 до 100.
argsКомандная строка, с которой был вызван процесс. Это строка, в которой отдельные аргументы командной строки разделены пробелами; пробельные символы, встроенные в аргументы, экранируются соответствующим образом для системной оболочки: с помощью обратной косой черты в GNU и Unix и заключаются в двойные кавычки в Windows. Таким образом, эта строка командной строки может быть непосредственно использована в примитивах, таких как shell-command.