Version française
Home     About     Download     Resources     Contact us    
Browse thread
Unix.create_process vs Unix.open_process_out
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
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?