<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >System.Cmd.Utils</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_System-Cmd-Utils.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >MissingH-1.1.0.3: Large utility library</TD ><TD CLASS="topbut" ><A HREF="src/System-Cmd-Utils.html" >Source code</A ></TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >System.Cmd.Utils</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >portable to platforms with POSIX process\/signal tools</TD ></TR ><TR ><TD CLASS="infohead" >Stability</TD ><TD CLASS="infoval" >provisional</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >John Goerzen <jgoerzen@complete.org></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >High-Level Tools </A ></DT ><DD ><DL ><DT ><A HREF="#2" >Piping with lazy strings </A ></DT ><DT ><A HREF="#3" >Piping with handles </A ></DT ></DL ></DD ><DT ><A HREF="#4" >Low-Level Tools </A ></DT ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" ><P >Command invocation utilities. </P ><P >Written by John Goerzen, jgoerzen@complete.org </P ><P >Please note: Most of this module is not compatible with Hugs. </P ><P >Command lines executed will be logged using <A HREF="System-Log-Logger.html" >System.Log.Logger</A > at the DEBUG level. Failure messages will be logged at the WARNING level in addition to being raised as an exception. Both are logged under "System.Cmd.Utils.funcname" -- for instance, "System.Cmd.Utils.safeSystem". If you wish to suppress these messages globally, you can simply run: </P ><PRE > updateGlobalLogger "System.Cmd.Utils.safeSystem" (setLevel CRITICAL) </PRE ><P >See also: <TT ><A HREF="/usr/share/doc/ghc/html/libraries/hslogger-1.1.0/System-Log-Logger.html#v%3AupdateGlobalLogger" >updateGlobalLogger</A ></TT >, <A HREF="System-Log-Logger.html" >System.Log.Logger</A >. </P ><P >It is possible to set up pipelines with these utilities. Example: </P ><PRE > (pid1, x1) <- pipeFrom "ls" ["/etc"] (pid2, x2) <- pipeBoth "grep" ["x"] x1 putStr x2 ... the grep output is displayed ... forceSuccess pid2 forceSuccess pid1 </PRE ><P >Remember, when you use the functions that return a String, you must not call <TT ><A HREF="System-Cmd-Utils.html#v%3AforceSuccess" >forceSuccess</A ></TT > until after all data from the String has been consumed. Failure to wait will cause your program to appear to hang. </P ><P >Here is an example of the wrong way to do it: </P ><PRE > (pid, x) <- pipeFrom "ls" ["/etc"] forceSuccess pid -- Hangs; the called program hasn't terminated yet processTheData x </PRE ><P >You must instead process the data before calling <TT ><A HREF="System-Cmd-Utils.html#v%3AforceSuccess" >forceSuccess</A ></TT >. </P ><P >When using the hPipe family of functions, this is probably more obvious. </P ><P >Most of this module will be incompatible with Windows. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3APipeHandle" >PipeHandle</A > = <A HREF="#v%3APipeHandle" >PipeHandle</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3AprocessID" >processID</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AProcessID" >ProcessID</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AphCommand" >phCommand</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AphArgs" >phArgs</A > :: [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AphCreator" >phCreator</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsafeSystem" >safeSystem</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AforceSuccess" >forceSuccess</A > :: <A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AposixRawSystem" >posixRawSystem</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/unix-2.4.0.2/System-Posix-Process-Internals.html#t%3AProcessStatus" >ProcessStatus</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AforkRawSystem" >forkRawSystem</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AProcessID" >ProcessID</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApipeFrom" >pipeFrom</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApipeLinesFrom" >pipeLinesFrom</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApipeTo" >pipeTo</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApipeBoth" >pipeBoth</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AhPipeFrom" >hPipeFrom</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AhPipeTo" >hPipeTo</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AhPipeBoth" >hPipeBoth</A > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3APipeMode" >PipeMode</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AReadFromPipe" >ReadFromPipe</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AWriteToPipe" >WriteToPipe</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApOpen" >pOpen</A > :: <A HREF="System-Cmd-Utils.html#t%3APipeMode" >PipeMode</A > -> <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > a) -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApOpen3" >pOpen3</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A > -> <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AProcessID" >ProcessID</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > a) -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApOpen3Raw" >pOpen3Raw</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A > -> <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AProcessID" >ProcessID</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="1" ><A NAME="1" >High-Level Tools </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:PipeHandle" ><A NAME="t%3APipeHandle" ></A ></A ><B >PipeHandle</B > </TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#PipeHandle" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Return value from <TT ><A HREF="System-Cmd-Utils.html#v%3ApipeFrom" >pipeFrom</A ></TT >, <TT ><A HREF="System-Cmd-Utils.html#v%3ApipeLinesFrom" >pipeLinesFrom</A ></TT >, <TT ><A HREF="System-Cmd-Utils.html#v%3ApipeTo" >pipeTo</A ></TT >, or <TT ><A HREF="System-Cmd-Utils.html#v%3ApipeBoth" >pipeBoth</A ></TT >. Contains both a ProcessID and the original command that was executed. If you prefer not to use <TT ><A HREF="System-Cmd-Utils.html#v%3AforceSuccess" >forceSuccess</A ></TT > on the result of one of these pipe calls, you can use (processID ph), assuming ph is your <TT ><A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TT >, as a parameter to <TT ><A HREF="/usr/share/doc/ghc/html/libraries/unix-2.4.0.2/System-Posix-Process.html#v%3AgetProcessStatus" >getProcessStatus</A ></TT >. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:PipeHandle" ><A NAME="v%3APipeHandle" ></A ></A ><B >PipeHandle</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:processID" ><A NAME="v%3AprocessID" ></A ></A ><B >processID</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AProcessID" >ProcessID</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:phCommand" ><A NAME="v%3AphCommand" ></A ></A ><B >phCommand</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:phArgs" ><A NAME="v%3AphArgs" ></A ></A ><B >phArgs</B > :: [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:phCreator" ><A NAME="v%3AphCreator" ></A ></A ><B >phCreator</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >Function that created it </TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:PipeHandle')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:PipeHandle" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > <A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:safeSystem" ><A NAME="v%3AsafeSystem" ></A ></A ><B >safeSystem</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#safeSystem" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Invokes the specified command in a subprocess, waiting for the result. If the command terminated successfully, return normally. Otherwise, raises a userError with the problem. </P ><P >Implemented in terms of <TT ><A HREF="System-Cmd-Utils.html#v%3AposixRawSystem" >posixRawSystem</A ></TT > where supported, and System.Posix.rawSystem otherwise. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:forceSuccess" ><A NAME="v%3AforceSuccess" ></A ></A ><B >forceSuccess</B > :: <A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#forceSuccess" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Uses <TT ><A HREF="/usr/share/doc/ghc/html/libraries/unix-2.4.0.2/System-Posix-Process.html#v%3AgetProcessStatus" >getProcessStatus</A ></TT > to obtain the exit status of the given process ID. If the process terminated normally, does nothing. Otherwise, raises an exception with an appropriate error message. </P ><P >This call will block waiting for the given pid to terminate. </P ><P >Not available on Windows. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:posixRawSystem" ><A NAME="v%3AposixRawSystem" ></A ></A ><B >posixRawSystem</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/unix-2.4.0.2/System-Posix-Process-Internals.html#t%3AProcessStatus" >ProcessStatus</A ></TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#posixRawSystem" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Invokes the specified command in a subprocess, waiting for the result. Return the result status. Never raises an exception. Only available on POSIX platforms. </P ><P >Like system(3), this command ignores SIGINT and SIGQUIT and blocks SIGCHLD during its execution. </P ><P >Logs as System.Cmd.Utils.posixRawSystem </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:forkRawSystem" ><A NAME="v%3AforkRawSystem" ></A ></A ><B >forkRawSystem</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AProcessID" >ProcessID</A ></TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#forkRawSystem" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Invokes the specified command in a subprocess, without waiting for the result. Returns the PID of the subprocess -- it is YOUR responsibility to use getProcessStatus or getAnyProcessStatus on that at some point. Failure to do so will lead to resource leakage (zombie processes). </P ><P >This function does nothing with signals. That too is up to you. </P ><P >Logs as System.Cmd.Utils.forkRawSystem </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="2" ><A NAME="2" >Piping with lazy strings </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:pipeFrom" ><A NAME="v%3ApipeFrom" ></A ></A ><B >pipeFrom</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >)</TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#pipeFrom" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Read data from a pipe. Returns a lazy string and a <TT ><A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TT >. </P ><P >ONLY AFTER the string has been read completely, You must call either <TT ><A HREF="/usr/share/doc/ghc/html/libraries/unix-2.4.0.2/System-Posix-Process.html#v%3AgetProcessStatus" >getProcessStatus</A ></TT > or <TT ><A HREF="System-Cmd-Utils.html#v%3AforceSuccess" >forceSuccess</A ></TT > on the <TT ><A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TT >. Zombies will result otherwise. </P ><P >Not available on Windows. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:pipeLinesFrom" ><A NAME="v%3ApipeLinesFrom" ></A ></A ><B >pipeLinesFrom</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >])</TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#pipeLinesFrom" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Like <TT ><A HREF="System-Cmd-Utils.html#v%3ApipeFrom" >pipeFrom</A ></TT >, but returns data in lines instead of just a String. Shortcut for calling lines on the result from <TT ><A HREF="System-Cmd-Utils.html#v%3ApipeFrom" >pipeFrom</A ></TT >. </P ><P >Note: this function logs as pipeFrom. </P ><P >Not available on Windows. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:pipeTo" ><A NAME="v%3ApipeTo" ></A ></A ><B >pipeTo</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#pipeTo" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Write data to a pipe. Returns a ProcessID. </P ><P >You must call either <TT ><A HREF="/usr/share/doc/ghc/html/libraries/unix-2.4.0.2/System-Posix-Process.html#v%3AgetProcessStatus" >getProcessStatus</A ></TT > or <TT ><A HREF="System-Cmd-Utils.html#v%3AforceSuccess" >forceSuccess</A ></TT > on the ProcessID. Zombies will result otherwise. </P ><P >Not available on Windows. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:pipeBoth" ><A NAME="v%3ApipeBoth" ></A ></A ><B >pipeBoth</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >)</TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#pipeBoth" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Like a combination of <TT ><A HREF="System-Cmd-Utils.html#v%3ApipeTo" >pipeTo</A ></TT > and <TT ><A HREF="System-Cmd-Utils.html#v%3ApipeFrom" >pipeFrom</A ></TT >; forks an IO thread to send data to the piped program, and simultaneously returns its output stream. </P ><P >The same note about checking the return status applies here as with <TT ><A HREF="System-Cmd-Utils.html#v%3ApipeFrom" >pipeFrom</A ></TT >. </P ><P >Not available on Windows. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="3" ><A NAME="3" >Piping with handles </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:hPipeFrom" ><A NAME="v%3AhPipeFrom" ></A ></A ><B >hPipeFrom</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A >)</TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#hPipeFrom" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Read data from a pipe. Returns a Handle and a <TT ><A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TT >. </P ><P >When done, you must hClose the handle, and then use either <TT ><A HREF="System-Cmd-Utils.html#v%3AforceSuccess" >forceSuccess</A ></TT > or getProcessStatus on the <TT ><A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TT >. Zombies will result otherwise. </P ><P >This function logs as pipeFrom. </P ><P >Not available on Windows or with Hugs. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:hPipeTo" ><A NAME="v%3AhPipeTo" ></A ></A ><B >hPipeTo</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A >)</TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#hPipeTo" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Write data to a pipe. Returns a <TT ><A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TT > and a new Handle to write to. </P ><P >When done, you must hClose the handle, and then use either <TT ><A HREF="System-Cmd-Utils.html#v%3AforceSuccess" >forceSuccess</A ></TT > or getProcessStatus on the <TT ><A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TT >. Zombies will result otherwise. </P ><P >This function logs as pipeTo. </P ><P >Not available on Windows. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:hPipeBoth" ><A NAME="v%3AhPipeBoth" ></A ></A ><B >hPipeBoth</B > :: <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A >, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A >)</TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#hPipeBoth" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Like a combination of <TT ><A HREF="System-Cmd-Utils.html#v%3AhPipeTo" >hPipeTo</A ></TT > and <TT ><A HREF="System-Cmd-Utils.html#v%3AhPipeFrom" >hPipeFrom</A ></TT >; returns a 3-tuple of (<TT ><A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TT >, Data From Pipe, Data To Pipe). </P ><P >When done, you must hClose both handles, and then use either <TT ><A HREF="System-Cmd-Utils.html#v%3AforceSuccess" >forceSuccess</A ></TT > or getProcessStatus on the <TT ><A HREF="System-Cmd-Utils.html#t%3APipeHandle" >PipeHandle</A ></TT >. Zombies will result otherwise. </P ><P >Hint: you will usually need to ForkIO a thread to handle one of the Handles; otherwise, deadlock can result. </P ><P >This function logs as pipeBoth. </P ><P >Not available on Windows. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="4" ><A NAME="4" >Low-Level Tools </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:PipeMode" ><A NAME="t%3APipeMode" ></A ></A ><B >PipeMode</B > </TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#PipeMode" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:ReadFromPipe" ><A NAME="v%3AReadFromPipe" ></A ></A ><B >ReadFromPipe</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:WriteToPipe" ><A NAME="v%3AWriteToPipe" ></A ></A ><B >WriteToPipe</B ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:pOpen" ><A NAME="v%3ApOpen" ></A ></A ><B >pOpen</B > :: <A HREF="System-Cmd-Utils.html#t%3APipeMode" >PipeMode</A > -> <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A > -> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle" >Handle</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > a) -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > a</TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#pOpen" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Open a pipe to the specified command. </P ><P >Passes the handle on to the specified function. </P ><P >The <TT ><A HREF="System-Cmd-Utils.html#t%3APipeMode" >PipeMode</A ></TT > specifies what you will be doing. That is, specifing <TT ><A HREF="System-Cmd-Utils.html#v%3AReadFromPipe" >ReadFromPipe</A ></TT > sets up a pipe from stdin, and <TT ><A HREF="System-Cmd-Utils.html#v%3AWriteToPipe" >WriteToPipe</A ></TT > sets up a pipe from stdout. </P ><P >Not available on Windows. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:pOpen3" ><A NAME="v%3ApOpen3" ></A ></A ><B >pOpen3</B ></TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#pOpen3" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A ></TD ><TD CLASS="rdoc" >Send stdin to this fd </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A ></TD ><TD CLASS="rdoc" >Get stdout from this fd </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A ></TD ><TD CLASS="rdoc" >Get stderr from this fd </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" >Command to run </TD ></TR ><TR ><TD CLASS="arg" >-> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]</TD ><TD CLASS="rdoc" >Command args </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AProcessID" >ProcessID</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > a</TD ><TD CLASS="rdoc" >Action to run in parent </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ><TD CLASS="rdoc" >Action to run in child before execing (if you don't need something, set this to <TT >return ()</TT >) -- IGNORED IN HUGS </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >Runs a command, redirecting things to pipes. </P ><P >Not available on Windows. </P ><P >Note that you may not use the same fd on more than one item. If you want to redirect stdout and stderr, dup it first. </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:pOpen3Raw" ><A NAME="v%3ApOpen3Raw" ></A ></A ><B >pOpen3Raw</B ></TD ><TD CLASS="declbut" ><A HREF="src/System-Cmd-Utils.html#pOpen3Raw" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A ></TD ><TD CLASS="rdoc" >Send stdin to this fd </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A ></TD ><TD CLASS="rdoc" >Get stdout from this fd </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AFd" >Fd</A ></TD ><TD CLASS="rdoc" >Get stderr from this fd </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="System-IO-HVFS.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" >Command to run </TD ></TR ><TR ><TD CLASS="arg" >-> [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]</TD ><TD CLASS="rdoc" >Command args </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ><TD CLASS="rdoc" >Action to run in child before execing (if you don't need something, set this to <TT >return ()</TT >) -- IGNORED IN HUGS </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Posix-Types.html#t%3AProcessID" >ProcessID</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >Runs a command, redirecting things to pipes. </P ><P >Not available on Windows. </P ><P >Returns immediately with the PID of the child. Using waitProcess on it is YOUR responsibility! </P ><P >Note that you may not use the same fd on more than one item. If you want to redirect stdout and stderr, dup it first. </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >