Cygwin Subprocesses on XEmacs
Wed Jan 28 13:20:00 GMT 2015
Hi, Corinna et al,
On Wed, Jan 28, 2015 at 4:53 AM, Corinna Vinschen wrote:
> On Jan 27 23:05, Vin Shelton wrote:
>> I spent some time debugging M-x shell in XEmacs on 32-bit Cygwin.
>> Here's what I found out.
>> In the child after fork() but before exec(), the setsid() call in
>> disconnect_controlling_terminal() is causing the subprocess not to
>> function after it gets spawned.
> Can you define "not function" a bit more detailed? Does no process work
> at all, or do only processes requiring a tty not work? For instance,
> does something like an "echo foo > bar" still work?
M-x shell is specifically designed to spawn an interactive process
like a shell. The bash subprocess starts, but it accepts no input.
Here is the output of ps for that process:
S 1740 252 1740 268 pty1 1003 08:10:54 /usr/bin/bash
I think it's only commands requiring a tty, but that's the whole point
of M-x shell mode. There is a separate command - M-x shell-command -
which is designed to run and capture the output of individual commands
like "ls" or "echo". That works fine.
BTW, if I try to spawn gdb as a shell, the behavior is similar, but
this time the process looks like this:
3328 3248 3328 3408 pty2 1003 08:15:18
>> Thanks for any insight you can offer.
> Hmm, not off the top of my head. Is there a chance that you could
> provide a simple, self contained testcase to reproduce the setsid
> behaviour? I think I have to debug that.
You mean a simpler test case than XEmacs? That seems like a low bar. :-)
I'll try. Meanwhile, I've been looking at the emacs code (which in
this case is simpler) to see if I can figure out how it is that M-x
shell works there.
More information about the Cygwin-apps