How to avoid having shell scripts which fail from killing Emacs shell?
David Karr
dkarr@real.com
Tue Jun 23 02:29:00 GMT 2009
> -----Original Message-----
> From: cygwin-owner@cygwin.com [mailto:cygwin-owner@cygwin.com] On Behalf
> Of Ken Brown
> Sent: Monday, June 22, 2009 12:54 PM
> To: cygwin@cygwin.com
> Subject: Re: How to avoid having shell scripts which fail from killing
> Emacs shell?
>
> On 6/22/2009 3:38 PM, David Karr wrote:
> >> -----Original Message-----
> >> From: cygwin-owner@cygwin.com [mailto:cygwin-owner@cygwin.com] On
> Behalf
> >> Of Ken Brown
> >> Sent: Monday, June 22, 2009 12:26 PM
> >> On 6/22/2009 10:53 AM, David Karr wrote:
> >>> I've often been annoyed by shell scripts which fail for particular
> >>> reasons, at which point it causes my Emacs shell buffer to get killed,
> >>> with "Process shell<2> finished".
> >> I don't recall ever seeing this happen, but maybe I just don't
> remember.
> >> Can you give me a simple test case?
> >
> > I'm not sure how complicated it needs to be. My test case gathers a
> couple
> > of parameters and then calls a Java (JDK 1.6.0_14) class. The class
> throws
> > an exception (file not found) in my test case (because I'm deliberately
> > giving it parameters that will cause that). If I give it parameters
> that
> > will avoid the exception, then it doesn't kill the shell.
> >
> > Is that enough information to build a test case with?
>
> No. I don't have JDK installed, and I don't have any idea how it
> interacts with cygwin processes. If you can trigger the problem with a
> simple shell script that doesn't require JDK, I'll see if I can help.
> Or maybe someone on the list who does have JDK can suggest something for
> you to try.
I was able to produce an additional clue by writing a custom class for
testing this.
I found that the key is whether the Java class reads from stdin or not. I
built a first version that takes a filepath on the command line, and whether
I get the class to throw an exception or not, it exits the script without
killing the shell. However, when I changed the class to also read a line of
input from stdin, whether the filepath on the command line exists or not
(i.e., whether the class throws an exception or not), it kills the shell at
completion of the script.
So, it has something to do with whether the sub-shell reads stdin or not. I
have no idea what that indicates, but I'm sure that must be useful
information.
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list