Usar fprintf asi desde un FFI esta mal porque fprintf puede ser un macro.

http://pubs.opengroup.org/onlinepubs/7908799/xsh/stdio.h.html

No tienen ganas de ver como se hace en otros Smalltalks?


2013/12/23 Juan <[email protected]>

> Emilio
>
> Caching the functions probably improves the performance a lot. I can
> imagine two caches (for *printf functions):
> - a larger cache which has typeInfo -> externalFunction mapping
> - a smaller cache which maps formatString -> typeInfo
>
> The problem with this method is that FILE structure is platform specific
>
>
> 2013/12/23 Emilio Oca <[email protected]>
>
>> Gera, que honor que me respondas!!
>>
>> Si, eso trate de entrada (de hecho es lo que necesito), pero no funciona
>> asi, el piping no esta habilitado. todo lo que le pongas lo toma como
>> parametro de entrada al comando o funcion que invoques y no como una
>> indicacion al SO para que ejecute un segundo comando que seria el piping.
>> Creo que eso tien algo de sentido. Por eso me enfoque en tratar de hacer
>> algo con el handle que te dejan esas operaciones.... pero no logre nada.
>> Todo va via FFI y me supera :(
>>
>> Alguna pista que pueda seguir?
>>
>> Gracias
>>
>> Emilio
>>
>>
>>
>> 2013/12/23 Gerardo Richarte <[email protected]>
>>
>>> Hola Emilio. La verdad no se, pero quizás podés ejecutar el comando
>>> redireccionando la salida a un file (con > ) y después levantar el file...
>>> por lo menos mientras conseguís una solución de verdad (que va a tener que
>>> ver con abrir unos handles y redireccionar las salida (y entrada) a los
>>> handles.
>>>
>>> saludos!
>>>
>>>
>>>
>>> 2013/12/23 Emilio Oca <[email protected]>
>>>
>>> Hola
>>>>
>>>> Alguien sabe como puedo capturar desde pharo las salida de una consola
>>>> invocada desde NativeBoost?
>>>>
>>>  --
>>> --
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>>
>>> http://www.clubSmalltalk.org
>>> ---
>>> Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk"
>>> de Grupos de Google.
>>> Para anular la suscripción a este grupo y dejar de recibir sus correos
>>> electrónicos, envía un correo electrónico a
>>> [email protected].
>>> Para obtener más opciones, visita
>>> https://groups.google.com/groups/opt_out.
>>>
>>
>>  --
>> --
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>>
>> http://www.clubSmalltalk.org
>> ---
>> Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk"
>> de Grupos de Google.
>> Para anular la suscripción a este grupo y dejar de recibir sus correos
>> electrónicos, envía un correo electrónico a
>> [email protected].
>> Para obtener más opciones, visita
>> https://groups.google.com/groups/opt_out.
>>
>
> Puede que este thread ayude,
>
>
> https://mail.google.com/mail/u/0/#search/Nativeboost+stdout/12b503071b890311 
> puede
> servir.
> te copio la parte relevante, para hacer pruebas rapido.
>
> Well, i made a callout to printf() via NativeBoost in Linux,
>> but was unable to determine if it works, because when i run it, it
>> prints nothing on console.
>> Probably because stdout is closed by default and i need to reopen it
>> first.
>>
>
> You can always use fprintf :). A few years ago I wrote an incomplete API
> for stdio on windows which worked like this:
>
> fprintf := ExternalLibraryFunction
>         name: 'fprintf'
>         module: 'msvcrt.dll'
>         callType: ExternalFunction callTypeCDecl
>         returnType: ExternalType signedLong
>         argumentTypes: {
>                 (ExternalType structTypeNamed: #FILE) asPointerType.
>                 ExternalType string.
>                 ExternalType signedLong }.
> file := Stdio default fopenWith: 'test.txt' with: 'w'.
> fprintf invokeWith: file with: 'Your number is %d.' with: 42.
> Stdio default fcloseWith: file.
>
>
> saludos
> felices fiestas
> jmdc
>
>  --
> --
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
>
> http://www.clubSmalltalk.org
> ---
> Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk"
> de Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus correos
> electrónicos, envía un correo electrónico a
> [email protected].
> Para obtener más opciones, visita https://groups.google.com/groups/opt_out
> .
>

-- 
-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org
--- 
Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de 
Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos 
electrónicos, envía un correo electrónico a 
[email protected].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Responder a