[Newbies] Re: PipableOSProcess#notifyError

David T. Lewis lewis at mail.msen.com
Sun Jan 2 17:21:36 UTC 2011


On Sat, Jan 01, 2011 at 09:39:24PM +0000, Aidan Gauland wrote:
> David T. Lewis <lewis <at> mail.msen.com> writes:
> > [snip]
> > 
> >   | p |
> >   p := PipeableOSProcess command: 'false'.
> >   (Delay forSeconds: 1) wait.
> >   p notifyError.
> > 
> > [snip]
> 
> Thanks, Dave.  This clears up a *lot*.  And that code does raise a
> dialog.  But, yes, I shouldn't be using private methods.  I didn't
> notice what category #notifyError was in.
> 
> #succeeded tells me if the command returned non-zero, but how do I get
> the actual return code?

The PipeableOSProcess is a wrapper around an ExternalUnixOSProcess,
where the ExternalUnixOSProcess represents the actual process (in
this case a Unix process running the program /bin/false). The
PipeableOSProcess adds the higher level features needed to connect
pipes to the Unix process and make it interact with Squeak. So if
you want the exit status of the /bin/false program, you can get at
it like this:

| p |
p := PipeableOSProcess command: 'false'.
[p isComplete] whileFalse: [(Delay forMilliseconds: 10) wait].
p processProxy exitStatus ==> 256


> Also, I see that CommandShell and OSProcess haven't been updated since
> 2008.  Would you consider doing a cleanup of these packages?

I think you have an out of date version of OSProcess and CommandShell.
I don't keep the web pages updated on the Swiki very often, but the
actual OSProcess and CommandShell package are on SqueakSource at
http://www.squeaksource.com/OSProcess and http://www.squeaksource.com/CommandShell.
There have been dozens of updates since 2008, so you can load the
latest versions with a Monticello browser. The two packages that
you would load are OSProcess-dtl.58 and CommandShell-dtl.50.

> i.e. Removing obsolete methods such as #notifyError, and making all
> tests green in the latest version of Squeak.
> CommandShellTestCase??testPipeline65 and
> CommandShellTestCase??testPipeline66 are red (errors).  But that's
> still really good: 385 out of 387 passes.

On Linux with the standard VM, you should get 100% green on all tests,
except possibly for occasional intermittent failures related to timing.
If you still get failures after updating from SqueakSource, please let
me know.

> IOHandle
> <http://wiki.squeak.org/squeak/uploads/996/IOHandleV1-2-dtl.sar>,
> however, fails to load into the Squeak image Squeak4.2-10779-alpha.
> Could you please fix that, too, if you have the time?

I have not been keeping the IOHandle package up to date in recent
years. This was basically a proof of concept for some ideas I had
about restructuring some of the socket and file code in Squeak. I'm
not planning on doing anything further with this in the near term.

> Thanks,
> Aidan

You're welcome. Thanks for experimenting with this and for raising
some good questions!

Dave



More information about the Beginners mailing list