Spec-Zone.ru › Elisp

Отправка ввода процессам

Асинхронные подпроцессы получают ввод, когда им отправляет Emacs, что выполняется с помощью функций в этом разделе. Вы должны указать процесс, которому нужно отправить ввод, и данные ввода, которые нужно отправить. Если подпроцесс выполняет программу, данные отображаются на стандартном входе этой программы; для соединений данные отправляются подключенному устройству или программе.

У некоторых операционных систем ограниченное пространство для буферизованного ввода в pty. В этих системах Emacs периодически отправляет EOF наряду с другими символами, чтобы принудительно их пропустить. Для большинства программ эти EOF не вредят.

Ввод подпроцесса обычно кодируется с помощью системы кодирования, прежде чем подпроцесс получит его, очень похоже на текст, написанный в файл. Вы можете использовать set-process-coding-system для указания используемой системы кодирования (см. Информация о процессе). В противном случае, система кодирования берётся из coding-system-for-write, если она не nil; в противном случае, используется механизм по умолчанию (см. Системы кодирования по умолчанию).

Иногда система не может принять ввод для этого процесса, потому что буфер ввода заполнен. В этом случае функции отправки ожидают немного, принимая вывод от подпроцессов, а затем пробуют снова. Это даёт подпроцессу возможность прочитать больше своего ожидающего ввода и освободить место в буфере. Это также позволяет фильтрам (включая текущий), сторожам и таймерам работать — поэтому учитывайте это при написании кода.

В этих функциях аргумент process может быть процессом или именем процесса, или буфером или именем буфера (что обозначает процесс через get-buffer-process). nil означает процесс текущего буфера.

Функция: process-send-string process string

Эта функция отправляет process содержимое string как стандартный ввод. Она возвращает nil. Например, чтобы создать список файлов в буфере Shell:

(process-send-string "shell<1>" "ls\n")
     ⇒ nil
Функция: process-send-region process start end

Эта функция отправляет текст в области, определенной start и end, как стандартный ввод в process.

Ошибки возникают, если start и end не являются целыми числами или маркерами, указывающими позиции в текущем буфере. (Неважно, какое число больше).

Функция: process-send-eof &optional process

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

(process-send-eof "shell")
     ⇒ "shell"
Функция: process-running-child-p &optional process

Эта функция сообщит вам, предоставил ли process, который не должен быть соединением, а реальным подпроцессом, управление своим терминалом дочернему процессу. Если это верно, функция возвращает числовой идентификатор группы процессов переднего плана process; она возвращает nil если Emacs может быть уверен, что это не так. Значение равно t если Emacs не может определить, верно ли это. Функция сигнализирует об ошибке, если process является сетевым, последовательным или конвейерным соединением, или если подпроцесс не активен.

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

Spec-Zone.ru

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