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

Reply via email to