Implement process I/O helper.

This commit is contained in:
Dominik Pantůček 2023-04-10 20:49:18 +02:00
parent 5a44e85960
commit 8372cfdfb7

View file

@ -30,6 +30,7 @@
(
read-lines/no-bom
get-process-output-lines
process-send/recv
)
(import scheme
@ -64,4 +65,17 @@
(let-values (((a b c) (process-wait pid)))
result))))
;; Invokes given command with given arguments, gives it all input
;; lines and returns the output lines.
(define (process-send/recv cmd args . lines)
(let-values (((stdout stdin pid stderr) (process* cmd args)))
(let loop ((lines lines))
(when (not (null? lines))
(display (car lines) stdin)
(newline stdin)
(loop (cdr lines))))
(let ((result (read-lines stdout)))
(let-values (((pid exit-ok? exit/signal) (process-wait pid)))
result))))
)