
Em Dom, 2008-09-14 às 14:52 -0700, Don Stewart escreveu:
marcot:
Em Dom, 2008-09-14 às 16:07 -0300, Marco Túlio Gontijo e Silva escreveu:
Thanks, I got it to work running
threadWaitRead stdInput
before getChar.
Now I've got another problem:
import Control.Concurrent import System.IO import System.Process
main :: IO () main = do process <- runCommand "wget http://ftp.br.debian.org/debian/pool/main/g/ghc6/ghc6_6.8.2-6_amd64.deb" forkIO $ putStrLn "fork" >> getChar >>= putChar >> terminateProcess process waitForProcess process return ()
Not even fork is shown. Any hints?
Daemonic threads. When the main thread exits, everything exits. Check the docs for Control.Concurrent.
You better use an MVar to ensure the main thread waits on its child.
I don't think this is the problem because the mais thread is not exiting. wget takes a lot of time to end, and I never really wait it to finish. I wanted to enable the user to interrupt it, but if it's finished, I don't want to wait for the user input anymore, so the child thread can exit with the main one. I just noticed that if I add a putStrLn "wait" before waitForProcess, it'll print wait and then fork. I couldn't understand why this happened, but I can't still pass through getChar to get to terminateProcess. Is it right to call getChar inside a forkIO? Greetings. -- marcot Página: http://marcotmarcot.iaaeee.org/ Blog: http://marcotmarcot.blogspot.com/ Correio: marcot@riseup.net XMPP: marcot@jabber.org IRC: marcot@irc.freenode.net Telefone: 25151920 Celular: 98116720 Endereço: Rua Turfa, 639/701 Prado 30410-370 Belo Horizonte/MG Brasil