úÎùbportable experimental-Matti Niemenmaa <matti.niemenmaa+pipe@iki.fi>JPipes the input, using the given writer and reader functions, through all I the commands named, in the given working directory. Returns the result. 9An exception is thrown if the list of programs is empty. #The writer function is called in a forkIO'd thread, allowing this to be  lazy. That thread also calls  when done writing so that the I processes get terminated cleanly; this means that the runtime should be I multithreaded, or the call will block all threads and this function may ! deadlock. (In GHC, compile with  -threaded.) HSIGPIPE is ignored in the writer thread. Likewise, any IOExceptions are  caught and ignored. 'A convenience function for when you don't care about the working  directory,  uses ".". <A convenience function for the common case of piping from a   to a   . 0A function for the common case of piping from a   to a  . 7Note that this is not merely a convenient frontend for  and is 0 fundamentally different in the following ways: G A null list of programs is allowed, in which case the contents of the 9 input Handle are simply written to the output Handle. F This function is not lazy and returns only when the writing has been  completed. A convenience function for ". Opens the given files in binary  mode. Like <, but the working directory used is the directory component  of the path to the first file.     Pipe-2.1.2System.Process.Pipepipepipe' pipeString handlePipefilePipe filePipe' createProcpipelineprocess-1.0.1.4System.ProcesswaitForProcessbaseGHC.BaseStringGHC.IO.Handle.TypesHandle