когда я использую Haskell createProcess, мне нужно fork раньше, как если бы я использовал exec в c?
Из примеров, которые я видел, и того, что я пробовал, я не думаю, что делаю, но если я прочитаю из выходного дескриптора один раз, я получу ожидаемый результат, но если я попытаюсь прочитать дважды, он не прочитает ни разу.
Например:
beginProcess — это то же самое, что и createProcess, а z3 — это smt-решатель, который читает со стандартного ввода и записывает на стандартный вывод.
execute :: Process -> String -> IO String
execute (Just std_in, Just std_out,_,_) cmd = do
hPutStr std_in cmd
hFlush std_in
hGetLine std_out
main :: IO()
main = do
proc <- beginProcess "z3" ["-smt2","-in"]
execute proc "(set-option :print-success true)" >>= print
execute proc "(set-option :print-success true)" >>= print
Если я выполню одно выполнение, я получу ожидаемый результат, но если я сделаю оба, ничего не произойдет. Я читаю или пишу неправильно на ручках?
Спасибо за любую помощь, которую вы можете оказать.
beginProcess
? Я не могу найти это на hoogle или hayoo. - person ErikR   schedule 10.01.2014process
очень зависит от системы, поэтому вы должны указать, какую платформу вы используете. - person user2407038   schedule 10.01.2014