Any good eyes find mistakes below ? I got weird results with run/proc+io
while run/io seems to be fine.
(define (run/proc+io* thunk)
(let-values (((pr cw) (pipe))
((cr pw) (pipe)))
(let ((proc (fork (lambda ()
(close pr)
(close pw)
(move->fdes cr 0)
(move->fdes cw 1)
(with-current-input-port*
cr
(lambda ()
(with-current-output-port* cw thunk)))))))
(close cr)
(close cw)
(values proc pr pw))))
(define-syntax run/proc+io
(syntax-rules ()
((_ . epf)
(run/proc+io* (lambda () (exec-epf . epf))))))
(define (run/io* thunk)
(receive (proc i o) (run/proc+io* thunk)
(values i o)))
(define-syntax run/io
(syntax-rules ()
((_ . epf)
(run/io* (lambda () (exec-epf . epf))))))
Thanks for reading!
--
zhaoway@public1.ptt.js.cn ><##;> ><#;> iloveqhq at http://bbs.nju.edu.cn
http://c2.com/cgi/wiki?ZhaoWay ><#;> http://advogato.org/person/zhaoway/
keywords nanjing.china.linux.filesystem.iptables.garnome.debian.dpkg.rpm
bash.lex.yacc.gcc.lisp.scheme.o'caml.prolog.latex.php.apache.mysql.emacs
|