On Sun, Jan 18, 2015 at 5:02 PM, Dima Pasechnik <[email protected]> wrote:
> On 2015-01-18, Jernej Azarija <[email protected]> wrote: > > The thing is that sys.exit works pretty much the same way > > > >==== > > azi@goodegg:~$ cat foo.sage > > import sys > > sys.exit(42) > > azi@goodegg:~$ sage foo.sage > > 42 > > azi@goodegg:~$ echo $? > > 1 > >==== > > > > And the print itself is extremely annoying. I need to call Sage 10^6 > times > > from an external program and get 10^6 lines of non-needed output. > > this looks pretty bad, given that Sage's startup+exit time is 1 or 2 > seconds > on a reasoably fast computer. > (unless your computations are still much slower, of course). > > There should be ways to communicate with Sage without quitting in. > I agree. I ended up writing the output to a file and parsing it within the caller. Still pretty ugly and inefficient but it works. Though this still does not answer the question - why is Sage printing the exit status and not conforming to the standard behaviour of unix programs? > > > > > > On Sat, Jan 17, 2015 at 11:24 PM, Robert Bradshaw < > > [email protected]> wrote: > > > >> On Sat, Jan 17, 2015 at 2:02 PM, John H Palmieri < > [email protected]> > >> wrote: > >> > > >> > > >> > On Saturday, January 17, 2015 at 10:28:22 AM UTC-8, Jernej Azarija > wrote: > >> >> > >> >> Hello, > >> >> > >> >> I have to use Sage from an external comand and in order to do so I'll > >> need > >> >> to rely on the exit status given by Sage. Considering a trivial > example > >> >> > >> >> ============= > >> >> $ cat foo.sage > >> >> exit(0) > >> >> ============= > >> >> > >> >> > >> >> I get the following behaviour > >> >> > >> >> > >> >> ============= > >> >> $ sage la.sage > >> >> 0 > >> >> $ echo $? > >> >> 1 > >> >> ============= > >> >> > >> >> There are two things I am confused with here. > >> >> > >> >> 1. Why do we print 0? > >> >> > >> >> > >> >> 2. Why is the exit status 1 - indicating an error by UNIX standards? > >> >> > >> >> > >> >> Is there any reason behind this? If yes , what would be the best way > to > >> >> force my own exit status so that I can interpret the execution of > Sage > >> from > >> >> an external program? > >> > > >> > > >> > The underlying problem is that the "exit" function in Python doesn't > >> accept > >> > any arguments, so "exit(0)" raises an error when you run it in Sage. > >> This is > >> > why the exit status is nonzero. If your script had the line "exit()", > it > >> > would run as expected. Given that, I'm not sure why it prints 0. If > you > >> do > >> > "exit(3)", it will print 3 instead. > >> > >> You probably want sys.exit, which does take an exit status as an > integer. > >> > >> -- > >> You received this message because you are subscribed to a topic in the > >> Google Groups "sage-devel" group. > >> To unsubscribe from this topic, visit > >> https://groups.google.com/d/topic/sage-devel/CriQpiwWRLA/unsubscribe. > >> To unsubscribe from this group and all its topics, send an email to > >> [email protected]. > >> To post to this group, send email to [email protected]. > >> Visit this group at http://groups.google.com/group/sage-devel. > >> For more options, visit https://groups.google.com/d/optout. > >> > > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "sage-devel" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sage-devel/CriQpiwWRLA/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sage-devel. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.
