Browse thread
Unix.create_process vs Unix.open_process_out
-
James Jones
- Johann Spies
- Gerd Stolpmann
- Gerd Stolpmann
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Gerd Stolpmann <info@g...> |
| Subject: | Re: [Caml-list] Unix.create_process vs Unix.open_process_out |
Am Montag, den 14.04.2008, 08:43 -0400 schrieb James Jones: > Consider the following two functions: > > let test1 () = > let w = Unix.open_process_out "cat" in > assert (Unix.close_process_out w = Unix.WEXITED 0) > > let test2 () = > let r,w = Unix.pipe () in > let pid = Unix.create_process "cat" [| "cat" |] r Unix.stdout > Unix.stderr in > Unix.close w; > assert (snd (Unix.waitpid [] pid) = Unix.WEXITED 0) P.S. You can close the "other" w by setting the close on exec flag: let test2 () = let r,w = Unix.pipe() in Unix.set_close_on_exec w; let pid = Unix.create_process "cat" [| "cat" |] r Unix.stdout Unix.stderr in Unix.close w; assert (snd (Unix.waitpid [] pid) = Unix.WEXITED 0);; Gerd > > > Both execute "cat" and then close its stdin immediately. This should > cause cat to terminate. In test1 this works as expected but in test2, > cat keeps running forever. Is this the expected behavior of > Unix.create_process? > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs -- ------------------------------------------------------------ Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany gerd@gerd-stolpmann.de http://www.gerd-stolpmann.de Phone: +49-6151-153855 Fax: +49-6151-997714 ------------------------------------------------------------