Date: Fri, 15 Oct 2010 19:36:36 -0400
From: Ken Brown<kbrown@cornell.edu>
Cc:
I think I can fix a longstanding bug in the Cygwin build of emacs, in
which C-c C-c doesn't work to interrupt a process in shell mode. Since
the problem doesn't seem to be in the bug database, I'm reporting it
first for documentation purposes, and then I'll give the proposed fix.
To reproduce:
emacs -Q
M-x shell
cat
C-c C-c
(The cat process doesn't get killed.)
Is the reason for this known? It looks like the `kill' syscall isn't
doing its job, but if that's so, there should be a good reason for
that.
The following patch seems to fix it:
=== modified file 'src/s/cygwin.h'
--- src/s/cygwin.h 2010-01-13 08:35:10 +0000
+++ src/s/cygwin.h 2010-10-15 22:20:39 +0000
@@ -132,6 +132,9 @@
returns ENOSYS. A workaround is to set G_SLICE=always-malloc. */
#define G_SLICE_ALWAYS_MALLOC
+/* Send signals to subprocesses by "typing" special chars at them. */
+#define SIGNALS_VIA_CHARACTERS
+
/* the end */
/* arch-tag: 5ae7ba00-83b0-4ab3-806a-3e845779191b
I'd like to apply this to the emacs-23 branch. Does anyone see a
problem with it or anything further I should test?
Did you test it with a subprogram that puts its stdin into a mode
where (speaking in termios terms) the ISIG flag in c_lflag passed to
tcsetattr is unset?