From 902a37b259742f82e6e1c754034a732aea933934 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Mon, 31 Dec 2012 00:34:48 +0900 Subject: [PATCH] call-with-process-io auto-non-blocks the fds --- lib/chibi/process.scm | 11 +++++++++++ lib/chibi/process.sld | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/chibi/process.scm b/lib/chibi/process.scm index 349933d7..6a115d7c 100644 --- a/lib/chibi/process.scm +++ b/lib/chibi/process.scm @@ -64,6 +64,14 @@ (waitpid pid 0))))) (define (call-with-process-io command proc) + (define (set-non-blocking! fd) + (cond-expand + (threads + (set-file-descriptor-status! + fd + (bitwise-ior open/non-block (get-file-descriptor-status fd)))) + (else + #f))) (let ((command-ls (if (string? command) (string-split command) command)) (in-pipe (open-pipe)) (out-pipe (open-pipe)) @@ -88,6 +96,9 @@ (close-file-descriptor (car in-pipe)) (close-file-descriptor (cadr out-pipe)) (close-file-descriptor (cadr err-pipe)) + (set-non-blocking! (cadr in-pipe)) + (set-non-blocking! (car out-pipe)) + (set-non-blocking! (car err-pipe)) (proc pid (open-output-file-descriptor (cadr in-pipe)) (open-input-file-descriptor (car out-pipe)) diff --git a/lib/chibi/process.sld b/lib/chibi/process.sld index 26b91dbd..516aa3c0 100644 --- a/lib/chibi/process.sld +++ b/lib/chibi/process.sld @@ -17,6 +17,6 @@ call-with-process-io process->string process->string-list process->output+error) (import (chibi) (chibi io) (chibi string) (chibi filesystem)) - (cond-expand (threads (import (srfi 18))) (else #f)) + (cond-expand (threads (import (srfi 18) (srfi 33))) (else #f)) (include-shared "process") (include "process.scm"))