Hello everyone. Thank you Juampi & Ben for your answers. This is the final working code, made with Johan's help:
Hi Demian,I am not sure if I understood well your questions, but maybe you can try something like:-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=MyWriteStream>>nextPutAll: contentTranscript show: content.-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-and then execute:[(PipeableOSProcess command:'sh /Users/jsandova/workspace/test.sh') ��outputOn: (MyWriteStream with: Array new)] fork.Regards,Juampi2015-01-13 12:47 GMT-03:00 Ben Coman <btc@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�� �� doecho $VARIABLEsleep 2�� �� doneand 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 -benOn Tue, Jan 13, 2015 at 11:05 PM, Demian Schkolnik <demianschkolnik@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 <btc@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 -benOn Tue, Jan 13, 2015 at 9:18 AM, Demian Schkolnik <demianschkolnik@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