Вы можете использовать очередь транзакций для связи с подпроцессом с помощью транзакций. Сначала используйте tq-create для создания очереди транзакций, которая обменивается данными с указанным процессом. Затем вы можете вызвать tq-enqueue, чтобы отправить транзакцию.
Эта функция создает и возвращает очередь транзакций, которая обменивается данными с process. Аргумент process должен быть подпроцессом, способным отправлять и принимать потоки байтов. Это может быть дочерний процесс или TCP-соединение с сервером, возможно, на другой машине.
Эта функция отправляет транзакцию в очередь queue. Указание очереди эквивалентно указанию подпроцесса, с которым нужно общаться.
Аргумент question — это исходящее сообщение, которое инициирует транзакцию. Аргумент fn — это функция, которую нужно вызвать, когда приходит соответствующий ответ; она вызывается с двумя аргументами: closure и полученный ответ.
Аргумент regexp — это регулярное выражение, которое должно соответствовать тексту в конце всего ответа, но ничему до него; таким образом tq-enqueue определяет, где заканчивается ответ.
Если аргумент delay-question не равен nil, отложите отправку этого вопроса до тех пор, пока процесс не закончит отвечать на любые предыдущие вопросы. Это обеспечивает более надежные результаты с некоторыми процессами.
Закрывает очередь транзакций queue, дожидается завершения всех ожидающих транзакций, а затем завершает соединение или дочерний процесс.
Очереди транзакций реализуются с помощью фильтрующей функции. См. Функции фильтрации процессов.