Browse thread
Unix.create_process vs Unix.open_process_out
- James Jones
[
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: | 2008-04-14 (12:56) |
From: | James Jones <jamesj@g...> |
Subject: | Unix.create_process vs Unix.open_process_out |
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) 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?