Hi Demian,

I am not sure if I understood well your questions, but maybe you can try
something like:

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
MyWriteStream>>nextPutAll: content
Transcript show: content.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

and then execute:

[(PipeableOSProcess command:'sh /Users/jsandova/workspace/test.sh')
 outputOn: (MyWriteStream with: Array new)] fork.

Regards,
Juampi

2015-01-13 12:47 GMT-03:00 Ben Coman <b...@openinworld.com>:

> So you mean 'rostopic echo' and 'rostopic pub' ?   So its a
> publisher/subscriber model with 'echo' as the subscriber ?
>
> (I'll needs others to confirm this is possible but...) the way to go may
> be to fork 'rotopic echo' and leave it running, parsing its results into a
> queue that some other part of your program consumes.
>
> To simplify this to check feasibility, I'd start with a single shell
> script outputting text at intervals like this...
>     "test.sh"
>     for VARIABLE in 1 2 3 4 5 .. N
>     do
> echo $VARIABLE
> sleep 2
>     done
>
>
> and in Pharo, assuming you can process the output stream asynchronously,
> every time you receive a newline, open an inspector showing the line just
> received.  But sorry I don't know *PipeableOSProcess enough to know how.*
>
> *cheers -ben*
>
>
> On Tue, Jan 13, 2015 at 11:05 PM, Demian Schkolnik <
> demianschkol...@gmail.com> wrote:
>
>> It is actually not a native linux command, but rather something belonging
>> to ROS (Robot Robot Operating System). I did not want to complicate the
>> question further.. The behaviour is as I described it. This echo command
>> sits still in the console where it was called, and waits. When some message
>> is send, then it just prints the message on screen and waits. The pub
>> method (also belonging to ROS) publishes a message and exits.
>> I tried Ben's solution (thanks!), but unfortunately stringVar remains
>> nil. I think the problem is we are assigning the output of the command to
>> stringVar, which is nothing, at the moment.
>> Any ideas?
>> Thank you all.
>>
>> El Tue Jan 13 2015 at 6:15:01, Ben Coman <b...@openinworld.com> escribió:
>>
>> I've never known 'echo' to wait for input, and haven't heard of this echo
>>> & pub combination.  Do you have some link to a tutorial showing how they
>>> are used?
>>>
>>> However just wildly guessing, are you wanting to get output from a long
>>> running command without blocking the Pharo UI?
>>> In that case, what about...
>>>     [ *stringVar := (PipeableOSProcess  command: 'echo...') output ]
>>> fork. *
>>> *?*
>>> *cheers -ben*
>>>
>>> On Tue, Jan 13, 2015 at 9:18 AM, Demian Schkolnik <
>>> demianschkol...@gmail.com> wrote:
>>>
>>>> Hello everyone.
>>>>
>>>> I have the following question. I have a specific 'echo ...' command,
>>>> which I send to the linux console via " OSProcess command:'echo ... ' ".
>>>> This echo command, when executed on the native linux console, stands by
>>>> until it receives some message.
>>>> Following this, I have to execute a 'pub...' command, which gives some
>>>> information that the echo command will print on screen. On linux, you run
>>>> 'echo..' on a terminal and 'pub...' on another.
>>>> My objective here is to capture the output of echo into a smalltalk
>>>> variable for later use.
>>>> Normally, if a console command prints something immediately to screen,
>>>> I use
>>>> *(PipeableOSProcess command:'some command') output.*
>>>>
>>>> It is here a little different though, since this command will not print
>>>> something immediately to screen. I want to do something like this, where
>>>> the final output of 'echo..' stays in stringVar.
>>>>
>>>> *stringVar := (PipeableOSProcess  command: 'echo...') output. *
>>>> *(Delay forSeconds:3) wait.*
>>>> *(OSProcess command: 'pub... ').*
>>>> *(Delay forSeconds:3) wait.*
>>>>
>>>> Thank you all.
>>>>
>>>>
>>>>
>>>>
>>>
>


-- 
Saludos,
Juan Pablo

Reply via email to