exec regresa valor extra

Started by Prg, May 01, 2009, 04:51:06 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Prg

hola, he estado revisando cómo funciona el paso de parámetros con exec y exit, sin embargo he encontrado algo extraño y en la bennu wiki no he encontrado nada al respecto... muestro lo que encontré:

1.- en un programa tengo la sentencia  exit(datos,2); donde dato es una string con la palabra "hola" (será cd(); pero para las pruebas está bien)

si compilo y ejecuto el programa funciona perfectamente el paso de la string (en la consola del context), sin embargo el 2 no hace nada,

QuoteParameters
[STRING message]    - A message to pass outside the program as it exits.
[INT code]    - A code to pass outside the program as it exits.

http://wiki.bennugd.org/index.php?title=Exit

ahora, cuando lanzo el programa (exe) desde otro programa de bennu, me pasa esto:

[code language="bennu"]global
string it;
begin
it=exec(_p_wait,"admin_rutas_gc",0,null);
say(it);
end[/code]


it siempre es "hola7"
y es raro porque el 7 no tiene nada que ver ahí
hice que datos fueran cd(); y me da la ruta pero con un 7 al final, investigué y:


QuoteReturns

INT
-1    - Error.
mode==_P_WAIT:    - The exit status of the executable.
mode==_P_NOWAIT:    - The process ID of the executable. This is not a ProcessID, it is a process ID of the operating system.

no hay nada acerca del 7


se que la solución es muy sencilla, pero si el 7 es un error y no algun parámetro extra, entonces cuando se arregle mi código no va funcionar correctamente, por eso mejor lo expongo aqui...

gracias por todo y saludos :)

pd, en el context me funciona bien el paso del primer parámetro del exit, todo el problema de la recepción del string viene al recibirlo con exec.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

vamos por partes...

Aca hay varios errores...

1) quien dijo que el retorno es una string?

Lo que estas viendo es.... "hola" que imprime el proceso que ejecutas y pegado es el 7 que es el codigo de retorno del exec... que ahi si, no se porque es 7...

proba esto y vas a ver lo que digo...


global
string it;
begin
it=exec(_p_wait,"admin_rutas_gc",0,null);
say("")
say("Retorno="+it);
end


2) lo del 7, no se por que retorna 7, cuando deberia retornar el exit... estoy revisando.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

ya veo, quedo en espera del siguiente punto, gracias  :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

jajaja, que estupido que soy... ya encontre porque el 7, es porque hay 7 modulos que cargaste que al terminar llaman a una funcion de desinicializacion y en la funcion se estaba usando la misma variable.
ya esta corregido...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

 :o aaaahhhhhhhhhh!!!...
... no entendí...  :D ...

je je je... bueno, lo importante es que en la próxima versión de bennu ya no va a  aparecer el 7 vd?  ... creo que experimentaré con la función en cuanto sea liberada... todavía tengo dudas en lo que respecta a cómo aparecerá el valor que exit devuelve (el numérico, no la cadena)...

muchas gracias splinter, nos vemos por aquí si me surgen más dudas cuando se libere la versión de bennu con esto corregido... je jee je  ;D
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

devuelve el valor numerico que pones en la funcion exit.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

ya podes bajar la version r48 del sitio de los snapshot
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

je je je, funciona de maravilla amigo... muchas gracias. :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)