[squeak-dev] how to write to stdOut and stdErr under Cog

Igor Stasenko siguctua at gmail.com
Mon Sep 27 19:51:44 UTC 2010


On 27 September 2010 21:09, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>
>
> On Sun, Sep 26, 2010 at 10:18 PM, Eliot Miranda <eliot.miranda at gmail.com>
> wrote:
>>
>> Hi Levente,
>>
>> On Sun, Sep 26, 2010 at 7:13 PM, Levente Uzonyi <leves at elte.hu> wrote:
>>>
>>> On Sun, 26 Sep 2010, Eliot Miranda wrote:
>>>
>>>> Hi Chris,
>>>>
>>>>   I have code for this, but right now I need to crack some crabs, so I
>>>> don't have time to verify this code in 4.1 :)  Use at your own risk ;)
>>>>  The
>>>> most important thing is the StandardFileStream>>stdioHandles primitive
>>>> for
>>>> accessing the streams.  N.B. some work needs to be done on the win32
>>>> FilePlugin support code before this will work on Windows.
>>>
>>> All three streams seem to be working on Windows Vista with the latest
>>> CogVM.
>>> This seems to be a really cool feature, though I think CrLfFileStream
>>> should be deprecated, so MultiByteFileStream support would be better IMO.
>>
>> The streams work if directed to files.  But they will /not/ work if
>> directed to input or output in a console window.  I should have been
>> clearer, sorry.  The work needed is in
>> platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c where if input and/or
>> output is the console we need to use ReadConsole & WriteConsole in place of
>> ReadFile & WriteFile.
>
> Hmmm.  Turns out I was confused about this.  One doesn't need ReadConsole &
> WriteConsole; ReadFile & WriteFile should do just fine.  But the Cog code
> doesnt work in either an MS-DOS console window or a cygwin console window.
>  If anyone's familiar with this area of Windows please feel free to take a
> look...

In Hydra, i simply changed main entry point from winMain() to main(),
and then i were able to print to console using printf() etc.
The side effect of it, that when you run VM from explorer, it opens a
console window,
so you end up with two windows - console and graphic.
and obvious, when you running it from command-line its using a console
from which you run it.

I din't explored the way , how to make it to not open console but
still have stdin/stdout working.

> TIA
> Eliot
>>
>> cheers
>> Eliot
>>>
>>>
>>> Levente
>>>
>>>>
>>>>
>>>> On Sun, Sep 26, 2010 at 2:46 PM, Chris Muller <asqueaker at gmail.com>
>>>> wrote:
>>>>
>>>>> I am developing a simple "CommandLineProcessor" facade for easily
>>>>> transferring command-line arguments simply as block-arguments, so you
>>>>> can write smalltalk scripts in vi:
>>>>>
>>>>>  CommandLineProcessor do: [ : arg1 : arg2 : arg3 | "args come in as
>>>>> Strings" ... ]
>>>>>
>>>>> and also for directing Notifications and Warnings messages to stdOut,
>>>>> and Errors to stdErr.  It relies on OSProcess to write to stdOut and
>>>>> stdErr for this.  However, ever since switching to Cog, writing to
>>>>> these streams does not seem to redirect out to Linux..
>>>>>
>>>>> I don't know whether writing to these streams makes me
>>>>> Linux-dependent, but it really is nice to be able to write Linux
>>>>> scripts that employ Squeak in the back-end, but operate normally like
>>>>> other shell programs in the terminal window and with redirecting
>>>>> output, etc.
>>>>>
>>>>>  - Chris
>>>>>
>>>>>
>>>>
>>>
>>
>
>
>
>
>



-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list