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 > > > > > >