Alex Greif wrote ...
> I tried the subprocess sample with the AsyncHandler from
> http://ofps.oreilly.com/titles/9781449380373/_foundation.html
> and found the following problem:
> if I execute the code many times (I tried 20 times) in my terminal with
> $ macruby sample.rb
> then 2-3 times it does not print any output. In this 10% the data_ready:
> method of the AsyncHandler is not called.
> 
> Is this a macruby problem or an NSTask problem?

It may be that the order of delivery of the data_ready and task_terminated 
notifications is indeterminate.  I modified the task_terminated handler to set 
a 'terminated' flag rather than call exit.  At the bottom of the example I 
executed the run loop in 1-second slices until the terminated flag was set and 
then executed it for one more second in case the data_ready notification hadn't 
arrived yet.  Under light testing this seemed to give the expected result 
consistently.

Note that the example has another small defect: it issues only one 
readInBackgroundAndNotify call.  If the task produces a lot of output not all 
of it will necessarily be delivered by this single read.  The data_ready 
handler should really issue a further readInBackgroundAndNotify I think.

Regards,
-- CMcP
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to