diff --git a/libinterp/corefcn/interpreter.cc b/libinterp/corefcn/interpreter.cc --- a/libinterp/corefcn/interpreter.cc +++ b/libinterp/corefcn/interpreter.cc @@ -417,7 +417,10 @@ namespace octave initialize_error_handlers (); if (m_app_context) - install_signal_handlers (); + { + install_signal_handlers (); + octave_unblock_signal_by_name ("SIGTSTP"); + } else quit_allowed = false; diff --git a/libinterp/corefcn/toplev.cc b/libinterp/corefcn/toplev.cc --- a/libinterp/corefcn/toplev.cc +++ b/libinterp/corefcn/toplev.cc @@ -285,6 +285,7 @@ systems. frame.add_fcn (restore_signal_mask, get_signal_mask ()); octave_unblock_async_signals (); + octave_unblock_signal_by_name ("SIGTSTP"); if (type == et_async) retval(0) = octave_async_system_wrapper (cmd_str.c_str ()); diff --git a/src/main.in.cc b/src/main.in.cc --- a/src/main.in.cc +++ b/src/main.in.cc @@ -369,6 +369,7 @@ main (int argc, char **argv) // so we can forward them to the child. octave_block_async_signals (); + octave_block_signal_by_name ("SIGTSTP"); #if defined (HAVE_OCTAVE_QT_GUI) && ! defined (OCTAVE_USE_WINDOWS_API) @@ -412,6 +413,7 @@ main (int argc, char **argv) install_signal_handlers (); octave_unblock_async_signals (); + octave_unblock_signal_by_name ("SIGTSTP"); int status;