[squeak-dev] Is there a way to quit/exit Squeak with a return code that can be tested in a .so file?
David T. Lewis
lewis at mail.msen.com
Sat Apr 29 00:05:46 UTC 2017
Confirming: Yes it works with the latest Spur VM and Squeak trunk image.
>From a console window, run Squeak in the foreground (no '&' at the end of the command):
$ spur64 my64BitImage
Then in the image, do e.g. "Smalltalk snapshot: false andQuitWithExitCode: 3"
to quit without saving and return exit status 3.
After the image exits, test the exit status that was returned to the shell:
$ echo $?
3
Dave
On Fri, Apr 28, 2017 at 01:13:38PM -0400, Louis LaBrunda wrote:
> Hi Guys,
>
> Thanks for the reply's. I found:
>
> snapshot: save andQuit: quit withExitCode: exitCode embedded: embeddedFlag
>
> which looks like it will do what I want. I will give it a try and report back.
>
> Lou
>
>
> On Fri, 28 Apr 2017 18:43:59 +0200, Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com> wrote:
>
> >2017-04-28 18:36 GMT+02:00 Nicolas Cellier <
> >nicolas.cellier.aka.nice at gmail.com>:
> >
> >>
> >>
> >> 2017-04-28 17:48 GMT+02:00 David T. Lewis <lewis at mail.msen.com>:
> >>
> >>> > Hi Squeakers,
> >>> >
> >>> > Is there a way to quit/exit Squeak with a return code that can be tested
> >>> > in a .so file?
> >>> >
> >>>
> >>> I think I remember implementing this a long time ago in the Unix VM. I
> >>> can't really look further right now but I'll check later and try to give a
> >>> better answer.
> >>>
> >>> IIRC, primitiveQuit can take an optional argument that is passed back to
> >>> the shell script that in turn gives you an exit code that you can test.
> >>> This probably is working right now in the interpreter VM (sorry I can't
> >>> check it at the moment). I'm not sure if it's in Cog/Spur, but if not it
> >>> can be easily added.
> >>>
> >>> Dave
> >>>
> >>>
> >>>
> >>>
> >> Answer is yes, if you browse the code on github,
> >> https://raw.githubusercontent.com/OpenSmalltalk/
> >> opensmalltalk-vm/Cog/src/vm/cointerp.c
> >> then you will see this:
> >>
> >> /* 113 */ primitiveQuit,
> >>
> >> ... snip...
> >>
> >> /* InterpreterPrimitives>>#primitiveQuit */
> >> static void
> >> primitiveQuit(void)
> >> { DECL_MAYBE_SQ_GLOBAL_STRUCT
> >> ioExitWithErrorCode((GIV(argumentCount) == 1
> >> ? ((longAt(GIV(stackPointer))) >> 1)
> >> : 0));
> >> }
> >>
> >>
> >> So you can pass a SmallInteger to the primitive 113
> >>
> >> Then to know what the platform will do with this error code, just query it
> >> thru github web iface:
> >>
> >> https://github.com/OpenSmalltalk/opensmalltalk-vm/search?utf8=%E2%9C%93&q=
> >> ioExitWithErrorCode&type=
> >>
> >> Sorry, I wanted to post that all supported platforms would call
> >exit(errorCode), but I'm bad with web iface shortcuts...
> ><rant>
> >The windows squeak spur VM/image fixture insist on having shortcuts thru
> >ALT instead of CTRL which certainly DOES NOT HELP!!!
> ></rant>
> --
> Louis LaBrunda
> Keystone Software Corp.
> SkypeMe callto://PhotonDemon
>
>
More information about the Squeak-dev
mailing list
|