|
Re: signal handling weirdness: msg#00081lang.haskell.glasgow.bugs
On 4/17/05, Volker Wysk <post@xxxxxxxxxxxxxx> wrote: > Hello. > > I'm trying to install a handler for the TERM signal: > > import System.Posix.Signals > import System.Posix.Unistd > import Monad > > main = > do installHandler sigTERM handler Nothing > sequence (repeat (putStrLn "bla" >> sleep 5)) > return () > > handler = Catch (putStrLn "caught SIGTERM") > -- handler = Ignore > > When you type ^C, the current pause gets cut short, but the program continues > to output "bla". It then terminates after another three to five "bla"'s. > Installing a signal handler has no effect at all, regardless of whether it's > Ignore or Catch (...). > > /tmp $ ghc -o sig sig.hs -package posix > /tmp $ ./sig > bla > bla > bla > bla > bla > sig: interrupted > > I'm using GHC 6.4 on Debian Linux. >From sleep(3): "sleep() makes the current process sleep until 'seconds' seconds have elapsed or a signal arrives which is not ignored." So 'sleep' returns when a signal arrives and C-c emits an interrupt signal (sigINT) and not a termination signal (sigTERM), which is why the pause gets cut short. You may wanna use Control.Concurrent.threadDelay instead of sleep. -- Friendly, Lemmih
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ ghc-Bugs-1177838 ] libraries/GLUT compile on FreeBSD (patch incl), SourceForge.net |
|---|---|
| Next by Date: | [ ghc-Bugs-1185509 ] HOpenGL uses wrong calling convention for GLU callbacks, SourceForge.net |
| Previous by Thread: | signal handling weirdness, Volker Wysk |
| Next by Thread: | [ ghc-Bugs-1185509 ] HOpenGL uses wrong calling convention for GLU callbacks, SourceForge.net |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |