File: process007.hs

package info (click to toggle)
ghc 9.0.2-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 177,780 kB
  • sloc: haskell: 494,441; ansic: 70,262; javascript: 9,423; sh: 8,537; python: 2,646; asm: 1,725; makefile: 1,333; xml: 196; cpp: 167; perl: 143; ruby: 84; lisp: 7
file content (24 lines) | stat: -rw-r--r-- 661 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

import System.Process
import System.IO
import System.Posix
import System.Exit

tmpfile = "process007.tmp"

main = do
  writeFile tmpfile "You bad pie-rats!\n"
  fd <- handleToFd =<< openFile tmpfile ReadMode
  rawSystem "./process007_fd" [show fd]
  closeFd fd

  fd <- handleToFd =<< openFile tmpfile ReadMode
  nul <- openFile "/dev/null" WriteMode
  (_,_,_,p) <- createProcess (shell ("./process007_fd " ++ show fd))
                               { close_fds = True,
                                 std_err = UseHandle nul }
  e <- waitForProcess p
  case e of
       ExitSuccess -> putStrLn "eek!"
       _ -> putStrLn "failed, as expected"
  closeFd fd