I notice that when I try to execute a non-existing command with
runInteractiveProcess, nasty things happen when I close the input.  To
be exact, the whole program terminates.  Is this the intended behavior,
and if so, what is the correct way to work around it?

Sample sessions below, "cat" is a valid executable, while "asdf" is not.

-k

% ghci                           
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.6, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
Prelude> :m + System.IO
Prelude System.IO> :m + System.Process
Prelude System.IO System.Process> (i,o,e,p) <- runInteractiveCommand "asdf"
Prelude System.IO System.Process> hPutStr i "foo"
Prelude System.IO System.Process> hClose i

% ghci       
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.6, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
Prelude> :m + System.Process
Prelude System.Process> :m + System.IO
Prelude System.Process System.IO> (i,o,e,p) <- runInteractiveCommand "cat"
Prelude System.Process System.IO> hPutStr i "foo"
Prelude System.Process System.IO> hClose i
Prelude System.Process System.IO> 
Prelude System.Process System.IO> x<- waitForProcess p
ExitSuccess


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to