Update of /cvsroot/wisp/wisp/users/pisi
In directory sc8-pr-cvs1:/tmp/cvs-serv25200
Modified Files:
dialect.pisi.wim
Log Message:
introduced talk-to-process
Index: dialect.pisi.wim
===================================================================
RCS file: /cvsroot/wisp/wisp/users/pisi/dialect.pisi.wim,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- dialect.pisi.wim 9 Feb 2003 15:56:10 -0000 1.7
+++ dialect.pisi.wim 10 Feb 2003 10:50:46 -0000 1.8
@@ -41,3 +41,25 @@
pathlist))
(raise 'no-good-command-in-path commando))
)
+
+
+;;;; Talk-to-process
+(define (talk-to-process proc masterproc)
+ (let* ((pipe-child (sys:pipe))
+ (pipe-parent (sys:pipe))
+ (child (sys:fork)))
+ (if (zero? child)
+ ;; child continues
+ (begin
+ (sys:dup2 (car pipe-parent) 0) (sys:close (cdr pipe-parent))
+ (sys:dup2 (cdr pipe-child) 1) (sys:close (car pipe-child))
+ (dedicated proc))
+ ;; parent
+ (my saved-data (cons (sys:dup 0) (sys:dup 1))
+ (sys:dup2 (car pipe-child) 0) (sys:close (cdr pipe-child))
+ (sys:dup2 (cdr pipe-parent) 1) (sys:close (car pipe-parent))
+ (masterproc)
+ (sys:dup2 (car saved-data) 0)
+ (sys:dup2 (cdr saved-data) 1)
+ ))))
+
|