Yes, that is normal. You are reading the output stream, and after it has been read (up to EOF) it will be empty.
Glad it is working for you now :-) Dave > additionally if inspect output a second time , the stdout string is gone, > so maybe it flushes / deletes it ? is this normal ? > > On Fri, Nov 6, 2015 at 11:30 AM Dimitris Chloupis <kilon.al...@gmail.com> > wrote: > >> looks like a vm problem after instruction of Thierry instead of >> >> wget -O- get.pharo.org/50+vmLatest | bash >> >> I did >> >> wget -O- get.pharo.org/50+vm | bash >> >> and now it works fine I can see the output with an inspection. >> >> Looks like something changed in the vm that broke this. >> >> On Fri, Nov 6, 2015 at 10:23 AM Dimitris Chloupis >> <kilon.al...@gmail.com> >> wrote: >> >>> good to know I am not the only one with this problem :) so how may I >>> help >>> solving this problem ? >>> >>> On Fri, Nov 6, 2015 at 10:11 AM john pfersich <jpfers...@gmail.com> >>> wrote: >>> >>>> I tested what I posted on a fresh Pharo 4.0 image on OSX 10.10 >>>> (Yosemite) so it sounds like something's wrong in the trunk. >>>> >>>> On Thu, Nov 5, 2015 at 10:38 PM, Dimitris Chloupis < >>>> kilon.al...@gmail.com> wrote: >>>> >>>>> It says I am using Cog 4.3.3 >>>>> >>>>> I also used the code of John pfersich >>>>> >>>>> p :=(PipeableOSProcess waitForCommand: 'ls') . >>>>> p output. >>>>> >>>>> and it still returns an empty string while the process is >>>>> >>>>> "a PipeableOSProcess on an ExternalUnixOSProcess with pid 769 on >>>>> /bin/sh (complete, normal termination with status 0)" >>>>> >>>>> I tried debugging but it froze the image with a >>>>> >>>>> UndefinedObject(Object)>>doesNotUnderstand: #stepToCallee >>>>> >>>>> this happened inside BlockClosure >> newProcess at Processor >>>>> terminateActive >>>>> >>>>> When I execute the command it works fine because I can see the output >>>>> in the terminal. >>>>> >>>>> >>>>> >>>>> On Fri, Nov 6, 2015 at 5:23 AM David T. Lewis <le...@mail.msen.com> >>>>> wrote: >>>>> >>>>>> On Fri, Nov 06, 2015 at 12:41:58AM +0000, Dimitris Chloupis wrote: >>>>>> > hello David and thank you for your help and your detailed >>>>>> explanation. >>>>>> > >>>>>> > as I said I used >>>>>> > >>>>>> > p :=(PipeableOSProcess command: 'ls') . p output. >>>>>> > >>>>>> > and it just returns an empty string. >>>>>> >>>>>> The way this should work is that p (an instance of >>>>>> PipeableOSProcess) >>>>>> should >>>>>> answer its output up to EOF (end of file) on the stdout from the >>>>>> process. >>>>>> >>>>>> Can you please try stepping through this slowly in a debugger, and >>>>>> see >>>>>> if >>>>>> it works? Or put "(Delay forSeconds: 1)" right before you do "p >>>>>> output"? >>>>>> I am guessing that there may be something about the OSProcessPlugin >>>>>> in >>>>>> your >>>>>> VM that is causing EOF detection to fail, such that you just get an >>>>>> empty >>>>>> string as output. >>>>>> >>>>>> I do not have a Mac to test, so I am only guessing. It might also be >>>>>> a >>>>>> bug in the OSProcess plugin, I'm not sure. >>>>>> >>>>>> Just to help me identify what your are running, could you please >>>>>> evaluate >>>>>> "OSProcess accessor osppModuleVersionString" and let me know what it >>>>>> says? >>>>>> The current version would be '4.6.1' but other versions may be in >>>>>> circulation, >>>>>> and that could affect EOF detection. >>>>>> >>>>>> Thanks, >>>>>> Dave >>>>>> >>>>>> >>>>>> > >>>>>> > Are there other ways to return the output of the terminal ? >>>>>> > >>>>>> > On Fri, Nov 6, 2015 at 1:57 AM David T. Lewis >>>>>> <le...@mail.msen.com> >>>>>> wrote: >>>>>> > >>>>>> > > On Thu, Nov 05, 2015 at 09:50:29PM +0000, Dimitris Chloupis >>>>>> wrote: >>>>>> > > > So I try to understand how OSProcess work exactly to find why >>>>>> filetree >>>>>> > > > seems not able to use it and generating the error I already >>>>>> reported >>>>>> > > > earlier. >>>>>> > > > >>>>>> > > > Using something simple like >>>>>> > > > >>>>>> > > > OSProcess command:'pwd' >>>>>> > > > >>>>>> > > > works great , I have the terminal open and I can see the >>>>>> correct >>>>>> return >>>>>> > > > value of the command in my terminal but for some reason I can >>>>>> find no >>>>>> > > such >>>>>> > > > info when I inspect the above example. So how exactly >>>>>> OSProcess >>>>>> returns >>>>>> > > the >>>>>> > > > output of the terminal ? Is there an instance variable of some >>>>>> sort ? >>>>>> > > > Because I tried to inspect it deeply and I found nothing . Can >>>>>> you help >>>>>> > > me >>>>>> > > > understand how OSProcess work ? Because If I do understand it >>>>>> then I can >>>>>> > > > find what the problem is . >>>>>> > > >>>>>> > > Hi Dimitris, >>>>>> > > >>>>>> > > The OSProcess and CommandShell packages provide a variety of >>>>>> ways >>>>>> to >>>>>> > > create and interact with operating system processes. In the case >>>>>> of >>>>>> > > "OSProcess command: 'pwd'" it is starting a new unix shell >>>>>> (/bin/sh, which >>>>>> > > on most systems is the Bash shell). Once it starts the shell, it >>>>>> asks >>>>>> > > the shell to evaluate the 'pwd' command. In this case, you would >>>>>> see the >>>>>> > > output of that 'pwd' command appearing in the terminal window >>>>>> for >>>>>> your >>>>>> > > Pharo VM process. >>>>>> > > >>>>>> > > If you inspect the result of this, you should see an instance of >>>>>> > > ExternalUnixOSProcess. This is a proxy that represents the >>>>>> operating >>>>>> > > system process that was used to run /bin/sh. It should look >>>>>> something like >>>>>> > > this: >>>>>> > > >>>>>> > > an ExternalUnixOSProcess with pid 10703 on /bin/sh (complete, >>>>>> normal >>>>>> > > termination with status 0) >>>>>> > > >>>>>> > > The exitStatus instance variable of the ExternaUnixProcess >>>>>> should >>>>>> be 0 in >>>>>> > > this example, which means only that the shell ran successfully >>>>>> (It >>>>>> does not >>>>>> > > tell you exit status of the 'pwd' command in this case, although >>>>>> there are >>>>>> > > other ways to do that). >>>>>> > > >>>>>> > > There are other classes, especially PipeableOSProcess and >>>>>> CommandShell, >>>>>> > > that support higher level control of OS processes, with direct >>>>>> connection >>>>>> > > of the stdin/stdout/stderr streams to your Smalltalk image. I >>>>>> expect that >>>>>> > > filetree would be using these higher level abstractions. >>>>>> > > >>>>>> > > I don't know if this helps with your problem but maybe it gives >>>>>> you some >>>>>> > > ideas. >>>>>> > > >>>>>> > > Dave >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> >>>>>> >>>> >