Consulta por NativeBoost

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Consulta por NativeBoost

Emilio Oca-2
Hola

Alguien sabe como puedo capturar desde pharo las salida de una consola invocada desde NativeBoost?

Saludos

     Emilio

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Consulta por NativeBoost

Gerardo Richarte
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 <[hidden email]>

Hola

Alguien sabe como puedo capturar desde pharo las salida de una consola invocada desde NativeBoost?

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Consulta por NativeBoost

Emilio Oca-2
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 <[hidden email]>
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 <[hidden email]>

Hola

Alguien sabe como puedo capturar desde pharo las salida de una consola invocada desde NativeBoost?

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Consulta por NativeBoost

Juan-2
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 <[hidden email]>
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 <[hidden email]>
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 <[hidden email]>

Hola

Alguien sabe como puedo capturar desde pharo las salida de una consola invocada desde NativeBoost?

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Puede que este thread ayude,

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 [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Consulta por NativeBoost

Gerardo Richarte
In reply to this post by Emilio Oca-2
Como es el código que usas? seguro usa CreateProcess(), y no WinExec(). Create process lleva el nombre del proceso y los argumentos por separado, WinExec() lleva un solo string y se paresea. Creo que con WinExec() tendría que funcionar.

Una alternativa es ejectuar el cmd.exe con argumentos /c y después otro único argumento con "el_comand.exe > el_archivo.txt" (INCLUYENDO las comillas). algo así

   salute!


2013/12/23 Emilio Oca <[hidden email]>
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 <[hidden email]>
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 <[hidden email]>

Hola

Alguien sabe como puedo capturar desde pharo las salida de una consola invocada desde NativeBoost?

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Consulta por NativeBoost

Emilio Oca-2
Gracias, Juan y Gera.... despues del receso les cuento :)


2013/12/23 Gerardo Richarte <[hidden email]>
Como es el código que usas? seguro usa CreateProcess(), y no WinExec(). Create process lleva el nombre del proceso y los argumentos por separado, WinExec() lleva un solo string y se paresea. Creo que con WinExec() tendría que funcionar.

Una alternativa es ejectuar el cmd.exe con argumentos /c y después otro único argumento con "el_comand.exe > el_archivo.txt" (INCLUYENDO las comillas). algo así

   salute!


2013/12/23 Emilio Oca <[hidden email]>
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 <[hidden email]>
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 <[hidden email]>

Hola

Alguien sabe como puedo capturar desde pharo las salida de una consola invocada desde NativeBoost?

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Consulta por NativeBoost

Andres Valloud-5
In reply to this post by Juan-2
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 <[hidden email]>
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 <[hidden email]>
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 <[hidden email]>
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 <[hidden email]>

Hola

Alguien sabe como puedo capturar desde pharo las salida de una consola invocada desde NativeBoost?

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Puede que este thread ayude,

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 [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Consulta por NativeBoost

Emilio Oca-2
In reply to this post by Gerardo Richarte
Hola,
Gracias por sus respuestas... y disculpen la demora, estoy volviendo a recien a este tema.

Jmdc.... me superaste, no veo claro como puedo direccionar la salida de un proceso con el ejemplo que das

Richie,lo que mejor me resulto fue esto:
    si := WinStartupInfo new.
    si wShowWindow: 0.
    pi := WinProcessInformation new.
    WinProcess createProcess: aCommand startupInfo: si processInformation: pi.
    [ (WinProcess waitForSingleObject: pi hProcess timeout: 10) > 0 ] whileTrue: [
         (Delay forMilliseconds: 10) wait.
    ].
    pi hProcess closeHandle.
    pi hThread closeHandle.
    Transcript show: 'ok'; cr.

Con esto tengo una llamada sincronica sin colgar la imagen.
aCommand es algo asi...
'sqlplus -S usr/pass@QA @V:\work\suite.sql' veo en una consola lo que sucede.
'sqlplus -S usr/pass@QA @V:\work\suite.sql > proc.log' veo en una consola lo que sucede sin generar proc.log.
'c:\path\testTest.bat > proc.log' funciona pero no quiero meter todos los scripts en un bat...


No entendi lo del cmd... hice pruebas pero solo abre la consola, pases lo que le pases despues.

Saludos

Emilio








2013-12-23 Gerardo Richarte <[hidden email]>:
Como es el código que usas? seguro usa CreateProcess(), y no WinExec(). Create process lleva el nombre del proceso y los argumentos por separado, WinExec() lleva un solo string y se paresea. Creo que con WinExec() tendría que funcionar.

Una alternativa es ejectuar el cmd.exe con argumentos /c y después otro único argumento con "el_comand.exe > el_archivo.txt" (INCLUYENDO las comillas). algo así

   salute!


2013/12/23 Emilio Oca <[hidden email]>
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 <[hidden email]>
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 <[hidden email]>

Hola

Alguien sabe como puedo capturar desde pharo las salida de una consola invocada desde NativeBoost?

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
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 [hidden email].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.