Process libraries

Version on this page:
LTS Haskell 11.1:
Stackage Nightly 2018-03-22:
Latest on Hackage:

See all snapshots process appears in

BSD3 licensed
Maintained by

Module documentation for

This package contains libraries for dealing with system processes.

The typed-process package is a more recent take on a process API, which uses this package internally. It features better binary support, easier concurrency, and a more composable API. You can read more about it at


Changelog for process package January 2018

  • Added getPid and export of platform specific Pid type #109 October 2017

  • Allow async exceptions to be delivered to masked thread calling waitForProcess #101
  • Update Win32 package version to 2.6.x July 2017

  • Expose CGid, GroupID, and UserID from System.Process.Internals #90 #91 February 2017

  • Fix: waitForProcess race condition #46 #58 February 2017

  • Bug fix: Don't close already closed pipes #81
  • Relax version bounds of Win32 to allow 2.5.
  • Add support for monitoring process tree for termination with the parameter use_process_jobs in CreateProcess on Windows. Also added a function terminateJob to kill entire process tree. December 2016

  • New exposed withCreateProcess
  • Derive Show and Eq for CreateProcess, CmdSpec, and StdStream January 2016

  • Added createPipeFD #52
    • New function createPipeFD added which returns a POSIX File Descriptor (CInt) instead of a GHC Handle to a pipe November 2015

  • Use less CPP #47
    • Refactor to have separate Windows and POSIX modules internally
    • Remove the broken non-GHC code paths November 2015

  • Added child_user and child_group to CreateProcess for unix. #45 August 2015

  • Add StdStream(NoStream) to have standard handles closed. #13
  • Support for Windows DETACHED_PROCESS and setsid #32
  • Support for Windows CREATE_NEW_CONSOLE #38 March 2015

  • [Meaningful error message when exe not found on close_fds is


  • New functions readCreateProcess and readCreateProcessWithExitCode Jan 2015

  • Fix delegated CTRL-C handling in createProcess in case of failed process creation. See issue #15 for more details.

  • waitpid on child PID after pre-exec failure in child to prevent zombies. See also issue #14. Dec 2014

  • Add support for base-

  • Remove Hugs98 specific code

  • New IsString CmdSpec instance

  • Expose documentation for System.Process.Internals

  • With GHC 7.10, System.Cmd and System.Process are now Safe (when compiled with older GHC versions they are just Trustworthy)

  • Expose createProcess_ function, and document behavior of UseHandle for createProcess. See issue #2.

  • New System.Process.createPipe operation. See also GHC #8943 Dec 2013

  • Update to Cabal 1.10 format
  • Remove NHC specific code
  • Add support for base-
  • Improve showCommandForUser to reduce redundant quoting
  • New functions callProcess, callCommand, spawnProcess and spawnCommand
  • Implement WCE handling according to
  • New delegate_ctlc field in CreateProcess for WCE handling
  • Use ExitFailure (-signum) on Unix when a proc is terminated due to a signal.
  • Deprecate module System.Cmd
  • On non-Windows, the child thread now comunicates any errors back to the parent thread via pipes.
  • Fix deadlocks in readProcess and readProcessWithExitCode
comments powered byDisqus