2017-01-07 3 views

ответ

0

Open /dev/null с withFile и установить его в качестве std_err в CreateProcess записи:

import System.Process 
import System.IO 

main :: IO() 
main = withFile "/dev/null" WriteMode (\handle -> do 
    (_,_,_,phandle) <- createProcess (shell "echo foo"){ std_err = UseHandle handle} 
    waitForProcess phandle 
    return()) 

В Windows, вы можете использовать файл NUL.

1

Не точное решение, которое вы ищете, но одно популярное решение в сообществе - использовать пакет silently для его достижения.

Вы можете использовать функцию hSilence, чтобы сделать то, что хотите. Фактически, внутренне он открывает /dev/null и выполняет всю работу. Пример кода демо:

#!/usr/bin/env stack 
{- stack 
    --resolver lts-6.15 
    --install-ghc 
    runghc 
    --package process 
    --package silently 
-} 

import System.Process 
import System.IO 
import System.IO.Silently 

writeToStderr :: IO() 
writeToStderr = do 
    hPutStrLn stderr "hello" 
    hPutStrLn stderr "world" 

main :: IO() 
main = hSilence [stderr] writeToStderr 
Смежные вопросы