Vincent Foley <gnuvince / yahoo.ca> writes: > how can I trap signals in Ruby like Ctrl-C, Ctrl-Z and do something else > with them? Would you believe 'trap'? trap("INT") do puts "ouch" end while line = gets puts line end Or... ----------------------------------------------------------- Kernel::trap trap( signal, cmd ) -> anObject trap( signal ) {| | block } -> anObject ------------------------------------------------------------------------ Specifies the handling of signals. The first parameter is a signal name (a string such as ``SIGALRM'', ``SIGUSR1'', and so on) or a signal number. The characters ``SIG'' may be omitted from the signal name. The command or block specifies code to be run when the signal is raised. If the command is the string ``IGNORE'' or ``SIG_IGN'', the signal will be ignored. If the command is ``DEFAULT'' or ``SIG_DFL'', the operating system's default handler will be invoked. If the command is ``EXIT'', the script will be terminated by the signal. Otherwise, the given command or block will be run. The special signal name ``EXIT'' or signal number zero will be invoked just prior to program termination. trap returns the previous handler for the given signal. trap 0, proc { puts "Terminating: #{$$}" } trap("CLD") { puts "Child died" } fork && Process.wait produces: Terminating: 16422 Child died Terminating: 16421