Implement process I/O helper.
This commit is contained in:
parent
5a44e85960
commit
8372cfdfb7
1 changed files with 14 additions and 0 deletions
|
@ -30,6 +30,7 @@
|
||||||
(
|
(
|
||||||
read-lines/no-bom
|
read-lines/no-bom
|
||||||
get-process-output-lines
|
get-process-output-lines
|
||||||
|
process-send/recv
|
||||||
)
|
)
|
||||||
|
|
||||||
(import scheme
|
(import scheme
|
||||||
|
@ -64,4 +65,17 @@
|
||||||
(let-values (((a b c) (process-wait pid)))
|
(let-values (((a b c) (process-wait pid)))
|
||||||
result))))
|
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))))
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue