Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problemas con la funcion execlp

Estas en el tema de problemas con la funcion execlp en el foro de C/C++ en Foros del Web. Hola a todos. Tengo un problema con la función "execlp". Quiero ejecutar el comando: ps PID Entonces hacía: result=execlp("ps","ps",PID,NULL); siendo PID el unsigned int que ...
  #1 (permalink)  
Antiguo 29/10/2007, 05:47
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 9 meses
Puntos: 7
Sonrisa problemas con la funcion execlp

Hola a todos.

Tengo un problema con la función "execlp".


Quiero ejecutar el comando:

ps PID


Entonces hacía:

result=execlp("ps","ps",PID,NULL);

siendo PID el unsigned int que me pasan como parámetro en esta función.


Siempre me sale el error:

Bad address

No lo entiendo.


Como se debe pasar entonces a la funcion execlp ese comando para que funcione???


Saludos.

Última edición por aeb_asturias; 29/10/2007 a las 06:13
  #2 (permalink)  
Antiguo 29/10/2007, 06:26
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 9 meses
Puntos: 7
Re: problemas con la funcion execlp

El problema lo estoy teniendo en que el PID es un int y no lo "traga" bien la función execlp. Habría que convertirlo en un string supongo....

He intentado que funcionara esto:


char *buffer;
sprintf(buffer, "%6d",pid);
result=execlp("ps","ps",buffer,NULL);

Entonces cuando lo ejecuto me sale el error:

ps: illegal option --
Usage: For BSD Compatible Syntax
ps [aexgmlvusjrSUALwhT] [Oo format] [ttty] [process number]


Nose bien como se convierte un entero en un string que seguramente es lo que hay que poner en la función execlp ya que cuando pongo a pelo:

result=execlp("ps","ps","75414",NULL);

Esto funciona perfectamente. Así que la cosa está en como pasar la variable pid de tipo entero a un string...
  #3 (permalink)  
Antiguo 29/10/2007, 08:29
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: problemas con la funcion execlp

No puedes escribir a un puntero sin inicializar...
  #4 (permalink)  
Antiguo 29/10/2007, 11:43
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 9 meses
Puntos: 7
Re: problemas con la funcion execlp

Muchas gracias por responder.

Tenias razón. No tenia el puntero inicializado.


Aprovecho el post para hacer otra pregunta relacionada con esto. Queria ejecutar:

ps PID > ps.txt

para así volcar el resultado del comando a el fichero "ps.txt". Lo hacía de esta manera:


char *fich=" > ps.txt";
result=execlp("ps","ps",pid,fich,NULL);

Se me ejecuta bien el comando "ps pid" pero no me redirecciona la salida al fichero "ps.txt" como tengo puesto en la variable "fich" sino que me saca el resultado por pantalla.

Porque es esto???
  #5 (permalink)  
Antiguo 29/10/2007, 16:55
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: problemas con la funcion execlp

result = system("ps 123 > ps.txt");

Estándar, fácil y sencillo.
  #6 (permalink)  
Antiguo 29/10/2007, 18:36
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 9 meses
Puntos: 7
Re: problemas con la funcion execlp

Perfecto. Muchas gracias por la solución. Desconocía dicha funcion.



Un saludo y gracias por todo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:17.