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
/usr/bin/gdb <defunct>
HTH.
>
> 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.
Thank you!
- Vin
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-beta