Process libraries

Version on this page:
LTS Haskell 9.13:
Stackage Nightly 2017-11-18:
Latest on Hackage:
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 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
Used by 1065 packages:
a50, abcnotation, accelerate-cuda, accelerate-llvm-ptx, acl2, activehs, addLicenseInfo, afv, Agda, ajhc, algebra-sql, amazonka-test, amby, ampersand, amqp-utils, android, AndroidViewHierarchyImporter, angel, angle, apelsin, apiary, apply-refact, archive, archiver, archlinux-web, arion, ArrowVHDL, arx, aspell-pipe, astview, atom, augur, authenticate-kerberos, autonix-deps, autoproc, avr-shake, aws-mfa-credentials, azubi, b9, backdropper, bake, bamboo, bamboo-launcher, bamboo-theme-mini-html5, bamse, batchd, bein, benchmark-function, berp, bindings-saga-cmd, bio, bird, black-jewel, blatex, BlogLiterately, blubber-server, bluetile, BNFC, bond, brainfuck-monad, buchhaltung, buildbox, buildwrapper, bumper, burnt-explorer, bustle, c2hs, cab, Cabal, cabal2arch, cabal2doap, cabal2nix, cabal2spec, cabal-db, cabal-debian, cabal-dev, cabalg, cabal-ghci, cabalgraph, cabal-graphdeps, cabal-helper, Cabal-ide-backend, cabal-install, cabal-install-bundle, cabal-install-ghc72, cabal-install-ghc74, cabal-macosx, cabal-mon, cabal-nirvana, cabal-rpm, CabalSearch, cabal-sign, cabal-sort, cabal-src, cabal-uninstall, cabin, caffegraph, cake, cake3, campfire, cao, capri, carettah, cartel, cblrepo, certificate, cg, cgrep, chalkboard, chalmers-lava2000, change-monger, chatty, checkmate, citation-resolve, clafer, claferIG, claferwiki, clash-ghc, clash-lib, clckwrks, cless, clippard, cloben, clone-all, clr-inline, clr-win-linker, cmaes, cmdargs, cmdargs-browser, cmdtheline, cnc-spec-compiler, codecov-haskell, codemonitor, codex, command, Command, Commando, command-qq, concorde, concraft-pl, concrete-haskell, concurrent-output, conduit-extra, configuration-tools, confsolve, Conscript, copilot-c99, copilot-cbmc, copilot-theorem, court, cplusplus-th, cpuperf, cr, craft, creatur, criu-rpc, crunghc, cryptol, csound-expression, csv-table, current-locale, dao, Dao, darcs, darcs-benchmark, darcs-beta, darcs-buildpackage, darcs-cabalized, darcsden, darcs-graph, darcs-monitor, darcswatch, datapacker, dbjava, ddc-build, ddc-driver, ddc-tools, ddc-war, debian, debian-build, debug-diff, debug-me, dedukti, delta, depends, dephd, derive, desert, devil, diagrams-lib, diagrams-pgf, dib, diffcabal, diffdump, difftodo, DisTract, distribution-nixpkgs, dist-upload, dmc, dmenu, dmenu-pkill, dmenu-pmount, dmenu-search, dockercook, doctest, DocTest, doi, dotenv, dotfs, DPM, DrIFT, DrIFT-cabalized, dropsolve, DSH, dsh-sql, DSTM, duplo, dynamic-plot, dynobud, dyre, dzen-utils, easyplot, ec2-unikernel, echo, ecu, editor-open, editpipe, egison, ehaskell, ekg-rrd, elm-compiler, elm-get, elm-init, elm-package, elm-reactor, elm-repl, elm-server, email, embeddock, epic, epub-tools, ersaconcat, ersatz, execs, executor, exference, extra, Extra, fadno, fay, fcd, fedora-haskell-tools, feed-gipeda, feldspar-compiler, fficxx, fibon, file-command-qq, filestore, fix-imports, flaccuraterip, fltkhs-demos, fmark, fordo, forest-fire, formal, forml, ForSyDe, fpco-api, fquery, free-theorems-webui, fswatch, fswatcher, funcmp, Fungi, fuzzytime, gargoyle, gargoyle-postgresql, gdo, geek, GenI, geni-gui, getemx, gf, ghc, ghc-core, ghc-core-html, ghc-dump-tree, ghc-gc-tune, ghcid, ghci-haskeline, ghc-imported-from, ghci-ng, ghc-make, ghc-man-completion, ghc-mod, ghc-options, ghc-parmake, ghc-pkg-autofix, GHood, giak, Gifcurry, ginsu, git-annex, gitcache, git-checklist, git-embed, git-fmt, git-freq, github-backup, gitHUD, gitit, git-jump, git-mediate, git-repair, gitrev, git-sanity, gitson, git-vogue, GiveYouAHead, gli, glirc, gnuplot, goa, gpah, gps2htmlReport, grakn, Graphalyze, graphite, graphviz, graql, grasp, grm, Grow, gtk2hs-buildtools, gtk-helpers, gtkrsync, GuiHaskell, H, hackage-diff, hackager, hackage-server, hackage-whatsnew, hackmanager, hackport, haddock-test, haddocset, hail, hake, hakyll, hakyll-contrib-elm, hakyll-R, halive, haltavista, hamusic, handa-gdata, hannahci, hapistrano, HAppS-Server, happstack-server, happstack-util, HAppS-Util, happybara-webkit, happybara-webkit-server, harmony, HarmTrace, HasCacBDD, Hashell, haskdogs, haskeem, haskeline, haskell98, haskell98libraries, haskell-awk, haskell-cnc, haskell-coffee, haskell-docs, haskell-gi, haskell-import-graph, haskell-platform-test, haskell-player, haskell-read-editor, haskellscript, haskell-tools-cli, haskell-tools-daemon, haskell-typescript, haskell-updater, haskelzinc, hask-home, haskintex, haskore, haskore-realtime, haskore-supercollider, haskus-system-build, hastache, haste-compiler, hat, haven, hayland, Hayoo, hback, hbro, hbro-contrib, Hclip, hcltest, hcron, hdevtools, hdf, hDFA, hdm, hdo, hdocs, heckle, Hedi, hein, heist, helisp, helium, hell, hellnet, HerbiePlugin, hermit, herringbone, hesh, HFitUI, hgdbmi, hgettext, hgrev, hi, hi3status, hifi, himerge, hinstaller, hip, Hish, historian, HJVM, hlatex, HLearn-distributions, hledger, hledger-ui, hlint, hly, hmatrix-gsl, hmenu, hmk, hmp3, hmt-diagrams, HNM, Hoed, hol, Holumbus-Searchengine, holy-project, hoobuddy, hoodle-core, hoodle-extra, hoodle-publish, hoogle, hoogle-index, hooks-dir, hoovie, houseman, hp2any-core, hp2any-graph, hpage, hpaste, hpasteit, hpc-coveralls, hpc-tracer, hplaylist, hpodder, hpygments, Hs2lib, hsay, hsbencher, hsc2hs, hsc3, hsc3-dot, hsc3-graphs, hsc3-plot, hsc3-process, hsc3-utils, hsConfigure, hscope, hScraper, hscrtmpl, hsdev, hsenv, hsfcsh, HSFFIG, hs-gizapp, HSH, hslackbuilder, hslinks, hslogger, hsmagick, Hsmtlib, hspec-server, hspec-setup, hsprocess, hstorchat, hstox, hs-watchman, HTF, htime, http-wget, hub, hubris, hunp, husk-scheme, hXmixer, hxt-filter, hydra-print, hydrogen-prelude, hylide, hyperion, ide-backend, ide-backend-common, ide-backend-server, idringen, idris, ihaskell, ihs, imbib, imperative-edsl, INblobs, infer-upstream, inject, inline-java, inline-r, intel-aes, internetmarke, intero, io-streams, ipatch, iptadmin, ipython-kernel, iridium, iterIO, ivory-backend-c, jammittools, jarify, jbi, jsaddle, json-autotype, jsonextfilter, json-tools, jukebox, jupyter, JYU-Utils, kansas-lava, kdesrc-build-extra, keera-posture, keiretsu, keter, keysafe, keystore, KiCS, kit, lambdabot-haskell-plugins, lambdabot-misc-plugins, lambdabot-novelty-plugins, lambdabot-reference-plugins, lambdabot-utils, lambdacube-compiler, Lambdajudge, language-c, language-objc, language-puppet, Lastik, latex-formulae-image, latex-function-tables, leksah-server, lhae, lhc, lhs2tex, lhslatex, libGenI, libgit, libgraph, libhbb, licensor, lilypond, linkcore, linode, linux-perf, linux-ptrace, liquid-fixpoint, liquidhaskell, live-sequencer, llvm, llvm-analysis, llvm-ht, llvm-pkg-config, llvm-pretty-bc-parser, LogicGrowsOnTrees-processes, lojban, loopy, lord, loshadka, lp-diagrams, lscabal, maccatcher, machines-process, macosx-make-standalone, MagicHaskeller, maid, makedo, make-package, manatee-core, manatee-mplayer, marmalade-upload, marxup, mathblog, mathflow, mathgenealogy, matplotlib, matterhorn, mattermost-api, maude, maxsharing, maybench, mbox-tools, mcm, mdo, mediabus, mediabus-rtp, mediawiki2latex, memis, Mhailist, mida, midi-utils, mime-mail, minions, minirotate, MissingH, module-management, modulo, mohws, mole, MonadLab, monitor, monky, movie-monad, mpvguihs, msu, mud, mudbath, mueval, multi-cabal, multifile, multifocal, multiplicity, muon, mushu, music-graphics, music-preludes, music-score, music-util, mute-unmute, mybitcoin-sci, mystem, native, neil, nemesis, netcore, netease-fm, newt, nix-eval, nix-paths, n-m, notmuch-web, nptools, nvim-hs, Obsidian, on-demand-ssh-tunnel, OnRmt, OpenAFP, open-browser, open-pandoc, opensoundcontrol-ht, opn, optparse-applicative, orc, orchid, osdkeys, oso2pdf, package-o-tron, packdeps, packunused, pager, panda, pandoc, pandoc-citeproc, pandoc-citeproc-preamble, pandoc-filter-graphviz, pandoc-include-code, pandoc-plantuml-diagrams, pandoc-vimhl, pango, panpipe, Parry, passage, pb, pdf2line, pdfsplit, pdf-toolbox-viewer, pdynload, pec, pesca, pgdl, phoityne, phoityne-vscode, Phsu, phybin, pia-forward, pid1, ping-wrapper, Pipe, pipes-cliff, pipes-shell, pit, pitchtrack, plist-buddy, plot-gtk, plot-gtk3, ploton, plots, PlslTools, plugins, plugins-multistage, pointless-haskell, pointless-lenses, pointless-rewrite, pomodoro, ports-tools, posix-pty, postgresql-orm, prefork, preprocessor, proc, process-conduit, process-extras, process-iterio, process-listlike, process-progress, process-qq, process-streaming, proctest, progression, progressive, propellor, proto-lens-protoc, prove-everywhere-server, Pugs, pugs-compat, purescript, puzzle-draw, qr-imager, qtah-cpp-qt5, qtah-generator, Quelea, quickbench, quickcheck-script, quicktest, quipper, quipper-rendering, quoridor-hs, rail-compiler-editor, rainbow, rapid-term, rascal, read-editor, readline, recursive-line-count, redo, refurb, reload, repline, reserve, resolve-trivial-conflicts, rest-gen, retryer, reversi, ReviewBoard, rewrite, ridley, riot, Rlang-QQ, rl-satton, RNAlien, robin, roguestar, roshask, R-pandoc, rpm, rts-loader, ruby-qq, runghc, runmany, salvia, samtools, sandman, sarsi, satchmo, satchmo-backends, satchmo-examples, satchmo-minisat, Saturnin, SBench, sbv, scc, scenegraph, scholdoc, scholdoc-citeproc, scion-browser, scons2dot, scp-streams, ScratchFs, scrz, scyther-proof, secure-sockets, SelectSequencesFromMSA, selenium-server, Semantique, sensei, sensenet, sensu-run, sentry, seqaid, serf, servant-ekg, servant-quickcheck, shadower, shake, shake-cabal-build, shake-language-c, shakespeare, shakespeare-babel, ShellCheck, shell-conduit, shellish, shellmate, shelltestrunner, shelly, shivers-cfg, shqq, shuffle, sifflet, sifflet-lib, simple, simpleprelude, simple-smt, simplex, sindre, skeleton, sloth, smerdyakov, smtlib2-pipe, smtp2mta, snap-elm, snaplet-ghcjs, snaplet-sass, snap-testing, snipcheck, SoccerFun, SoccerFunGL, source-code-server, sourcemap, sox, sparkle, spike, spiros, sprinkles, spy, srcinst, sr-extra, sscan, ssh, sshtun, stack, stack2nix, stackage-cabal, stackage-cli, stackage-curator, stackage-install, stackage-query, stackage-sandbox, stackage-setup, stackage-update, stackage-upload, stack-bump, stack-hpc-coveralls, stack-run-auto, static-resources, steeloverseer, stm-promise, Strafunski-Sdf2Haskell, streaming-commons, strictify, styx, sugarhaskell, sunlight, sunroof-examples, supercollider-ht, supero, super-user-spark, sync-mht, synthesizer, synthesizer-core, sys-auth-smbclient, sys-process, system-command, system-extra, system-info, system-locale, system-test, table, tabloid, taffybar, tamarin-prover, tamarin-prover-term, tamarin-prover-theory, target, task-distribution, tasty-golden, tasty-program, tasty-silver, tasty-stats, TaxonomyTools, TBC, tdd-util, tempered, tempo, termplot, tersmu, testbench, TestExplode, test-framework-golden, test-framework-program, test-sandbox, test-sandbox-compose, texbuilder, texrunner, textmatetags, text-show-instances, threadPool, tianbar, timeconsole, timestamp-subprocess-lines, tmp-postgres, todos, touched, toysolver, tpar, transf, transient-universe, travis-pogodi, trawl, traypoweroff, tsparse, tttool, turtle, typalyze, typed-process, typeof, uacpid, uhc-light, uhc-util, UMM, una, unbreak, uni-posixutil, unix-process-conduit, Unixutils, unm-hip, unused, update-nix-fetchgit, update-repos, up-grade, urembed, urxml, uuagc-cabal, uuagd, uzbl-with-source, vacuum-cairo, vacuum-opengl, vado, vampire, vault-tool-server, vcsgui, vcs-revision, vcswrapper, vgrep, ViennaRNAParser, Villefort, vimeta, vimus, vintage-basic, virthualenv, visual-graphrewrite, visual-prof, vivid, vk-posix-pty, voyeur, wacom-daemon, wai-app-file-cgi, wai-devel, wai-handler-launch, wai-middleware-consul, WashNGo, watchit, wavconvert, Webrexp, webserver, weeder, weigh, werewolf-slack, whim, win-hp-path, wlc-hs, wolf, wordsetdiff, wrecker-ui, wxdirect, wyvern, x509-system, xchat-plugin, xilinx-lava, xkbcommon, xml-to-json-fast, xmobar, xmonad, xmonad-bluetilebranch, xmonad-contrib, xmonad-contrib-bluetilebranch, xmonad-entryhelper, xmonad-eval, xmonad-vanessa, xsact, yavie, yeganesh, yesod-bin, yesod-content-pdf, yesod-fast-devel, yesod-fay, yesod-gitrepo, yesod-static, yices, yi-core, yjftp, yjftp-libs, Yogurt, Yogurt-Standalone, youtube, zeno, zeroth, zifter, zifter-cabal, zifter-git, zifter-google-java-format, zifter-hindent, zifter-stack, zipedit, zre, ztail
comments powered byDisqus