--
Francisco Moya Fernandez      Computer Architecture and Networks Group
Assistant Professor
[EMAIL PROTECTED]                      School of Computer Science
Fax:(+34 926) 29 53 54                University of Castilla-La Mancha
Tel:(+34 926) 29 54 83                      http://www.inf-cr.uclm.es/



-----Mensaje original-----
De: FRANCISCO MOYA FERNANDEZ
Enviado el: sáb 12/01/2008 17:18
Para: Manuel David Jiménez Patiño
CC: [EMAIL PROTECTED]
Asunto: RE: [CRySoL] C en tiempo real
 
Manuel, yo sigo diciendote lo mismo, un vector no es lo mismo que un array.

Esto:

char *argumento_recibido_de_la_unidad_de_control ="";

no te dejó vivir en paz, te acabó de destrozar el programa. Ahora esa variable 
es un puntero que apunta a un array de un solo elemento, que obviamente no 
tiene suficiente para ningún archivo.

Además si compilas con warnings activados habrás visto que un "" es un const 
char[] no un char[].

Salud,
Paco

--
Francisco Moya Fernandez      Computer Architecture and Networks Group
Assistant Professor
[EMAIL PROTECTED]                      School of Computer Science
Fax:(+34 926) 29 53 54                University of Castilla-La Mancha
Tel:(+34 926) 29 54 83                      http://www.inf-cr.uclm.es/



-----Mensaje original-----
De: [EMAIL PROTECTED] en nombre de Manuel David Jiménez Patiño
Enviado el: sáb 12/01/2008 15:51
Para: [email protected]
Asunto: Re: [CRySoL] C en tiempo real
 
Hola querido Paco, ayer cuando escribí el e-mail me pasé  todo el día
intentando solucionar el dichoso problema, por lo que mi duda salió escrita
como salió.

Nada más enviar el e-mail me di cuenta que me había equivocado al escribir:

strcpy(argumento_recibido_de_la_unidad_de_control, argv[0]);

Lógicamente tengo:

strcpy(argumento_recibido_de_la_unidad_de_control, argv[1]);


Como tú bien dices argv[0] es el nombre del ejecutable.


El compilador me daba fallo en esta línea:

strcpy(argumento_recibido_de_la_unidad_de_control, argv[1]);

Porque me decía que *argumento_recibido_de_la_unidad_de_control *no estaba
inicializado, por lo que al hacer simplemente:

char *argumento_recibido_de_la_unidad_de_control ="";

me dejó vivir en paz.

Por lo demás, sea guarro o asqueroso -- (debería seguir años picando
código,   leyendo código y manuales para poder decir que programo  (sms
subliminal para los que dicen que programar lo hace cualquiera)) --no
entiendo por qué no me funciona, debería funcionarme tal y como lo hace
cuando lo ejecuto por línea de comandos.

Pero en fin, seguiré intentándolo.

Saludos y gracias Paco por contestar.


**************************************************************************
"Levántate ponte en pie y defiende tus derechos, levánte ponte en pie y no
abandones la lucha" Bob Marley.









2008/1/12 FRANCISCO MOYA FERNANDEZ <[EMAIL PROTECTED]>:

>  Hombre, antes de nada decirte que me parece un poco guarro. No se por qué
> tienes que meterlo todo en un argumento cuando puedes pasar (de forma mucho
> más simple) varios.
>
> Por otro lado al execv le pasas solo el argv[0] que ni siquiera es un
> argumento del programa, sino el nombre del propio programa.
>
> Pero la parte más grave está en
>
> char *argumento_recibido_de_la_unidad_de_control;
> strcpy(argumento_recibido_de_la_unidad_de_control, argv[0]);
>
> ¡No es lo mismo un puntero que un array! Estás copiando el argv[0] en
> cualquier parte porque el puntero no está inicializado. Lo que pase a partir
> de esa línea puede ser cualquier cosa.
>
> En cuanto a ejecutarlo en línea de comandos no me creo que funcione. Por
> una razón muy sencilla, al ejecutarlo en línea de comandos el argv[0] es,
> como debe ser, el ejecutable. Por tanto tú crees que funciona, pero no lo
> hace porque realmente está diciendo que el ejecutable existe (cosa que ya
> sabiamos).
>
> Saludos,
> Paco
>
> --
> Francisco Moya Fernandez      Computer Architecture and Networks Group
> Assistant Professor
> [EMAIL PROTECTED]                      School of Computer Science
> Fax:(+34 926) 29 53 54                University of Castilla-La Mancha
> Tel:(+34 926) 29 54 83                      http://www.inf-cr.uclm.es/
>
>
>
> -----Mensaje original-----
> De: [EMAIL PROTECTED] en nombre de Manuel David Jiménez
> Patiño
> Enviado el: vie 11/01/2008 22:44
> Para: [email protected]
> Asunto: [CRySoL] C en tiempo real
>
> Hola muchachos y muchachas os comento la última penuria:
>
> estoy utilizando:
>
> execv(nombre_del_ejecutable,línea de ordenes);
>
> por ejemplo hago:
>
>   char *argv[] =
>
> {"ruta_de_un_archivo_uno#ruta_de_un_archivo_dos#ruta_de_un_archivos_tres"};
> // estas rutas las obtengo del proceso padre en tiempo real.( no lo hago
>
> exactamente como lo hemo mostrado antes,
>
> concretamente utilizo varias veces strcat, pero vamos para exponer mi duda
>
>
> puede valer)
>
> a = execv(etapa_dos,argv);
>
>
>
>
> Luego en el proceso etapa_dos:
>
> recojo argv.
>
> char *argumento_recibido_de_la_unidad_de_control;
>
> strcpy(argumento_recibido_de_la_unidad_de_control, argv[0]);
>
>
> y con la función  strtok saco los tokens (rutas de los archivos)
> delimitados
> por el caracter #.
>
> es decir, que consigo sacar a partir de a*
> rgumento_recibido_de_la_unidad_de_control*  por separado:
>
> ruta_de_un_archivo_uno
>
> ruta_de_un_archivo_dos
>
> ruta_de_un_archivo_tres
>
>
> Pero en este proceso comprueba la existencia de los mismos y me dice que
> no
> existen(cuando yo mismo los estoy viendo que si que existen).
>
> El fallo anterior es problandolo en tiempo real e incluso haciendo que
> antes
> de llamar  al proceso hijo se esperen 85 segundos(para que de tiempo más
> que
> suficiente a que se creen los archivos).
>
> En cambio ejecuto el programa desde línea de comandos metiendole rutas de
> archivos ya existentes y el programa no falla.
>
>
> No sé si me he explicado bien.
>
> Pero vamos, ¿A alguno de ustedes le ha pasado esto alguna vez?
>
> Saludos no cordiales.
>
>
> ********************************************************************************************
> "El viento viene y el viento se va, por la frontera, la suerte viene y la
> suerte se va, por la frontera" , Manu Chao
>
>


_______________________________________________
CRySoL mailing list
http://crysol.inf-cr.uclm.es/
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol

Responder a