changeset 25277:692fbde19871 stable

restore ability to interrupt subprocesses on Unixy systems (bug #53635) * terminal-dock-widget.cc (terminal_dock_widget::terminal_interrupt): Also send SIGINT to all processes in our process group.
author John W. Eaton <jwe@octave.org>
date Wed, 18 Apr 2018 09:21:06 -0400
parents 4adeabc1bbfe
children 607c59f16834 cc76e2ce0a99
files libgui/src/terminal-dock-widget.cc
diffstat 1 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/terminal-dock-widget.cc	Tue Apr 17 21:40:31 2018 -0400
+++ b/libgui/src/terminal-dock-widget.cc	Wed Apr 18 09:21:06 2018 -0400
@@ -27,12 +27,14 @@
 
 #include <QDesktopWidget>
 
+#include "quit.h"
+#include "signal-wrappers.h"
+
+#include "sighandlers.h"
+
 #include "terminal-dock-widget.h"
 #include "resource-manager.h"
 
-#include "sighandlers.h"
-#include "quit.h"
-
 namespace octave
 {
   terminal_dock_widget::terminal_dock_widget (QWidget *p)
@@ -110,5 +112,13 @@
 
     octave_signal_caught = 1;
     octave_interrupt_state++;
+
+    // Send SIGINT to all other processes in our process group.
+    // This is needed to interrupt calls to system (), for example.
+
+    int sigint;
+    octave_get_sig_number ("SIGINT", &sigint);
+
+    octave_kill_wrapper (0, sigint);
   }
 }