• Miércoles 6 de Noviembre de 2024, 04:40

Autor Tema:  Re: system("comando") a variable  (Leído 2326 veces)

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: system("comando") a variable
« en: Sábado 30 de Agosto de 2003, 18:53 »
0
Hola, q tal? Mi pregunta es si se puede pasar el resultado de un comando a una variable. Por ejemplo meter en una variable system("dir");

Si hago :

int variable;
system("dir")>>variable;

en variable se almacena un numero. Q significa ese numero? Hay alguna forma de hacer esto? Gracias

Astor

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: system("comando") a variable
« Respuesta #1 en: Sábado 30 de Agosto de 2003, 21:01 »
0
Mira el numero que almacenas de
int system(char *) no es mas que la salida del comando que ejecutaste (no la salida de pantalla, sino el valor de retorno).

Podrias ejecutarlo estilo
system("dir * > directorio.txt)
Despues usando las funciones para manejo de archivos, abrirlo y bueno, lo trabajas como quieras. No es de lo mas elegante, pero no se si tenes otra forma de hacerlo.

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: system("comando") a variable
« Respuesta #2 en: Domingo 31 de Agosto de 2003, 00:30 »
0
Hola, gracias por contestar, pero me parece que eso no me va a servir en este programa. Estoy intentando hacer un programa cliente/servidor. El cliente manda un comando al servidor, y este se ejecuta en el servidor. Hay alguna forma de q la salida del comando se pueda ver tambien en el cliente??habia pensado en redireccionar el comando a una varible (si es posible) y despues madar ese string al cliente con send y rcve de la misma forma q se enviaba el nombre del comando del cliente al servidor. Si redireccion el comando a un archivo luego tendria que mandar el archivo al ordenador donde esta el cliente,no? para poder leerlo, y eso ya va a ser mas complicao...Bueno, no se si me he explicado bien, pero gracias de todas formas

Astor

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: system("comando") a variable
« Respuesta #3 en: Domingo 31 de Agosto de 2003, 03:32 »
0
Podes hacer lo que te dije. El servidor abre el archivo txt, lo lee, analiza y lo manda por un socket o por el medio de comunicacion que uses.
Nunca escuche esod e guardar una salida de pantalla en una variable.

Podrias tambien redireccionar el descriptor de stdout a un pipe, o un fifo.

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: system("comando") a variable
« Respuesta #4 en: Domingo 31 de Agosto de 2003, 13:11 »
0
Hola, se pueden enviar archivos por los ssockets? es que eso no sabia, pense que solo se podian enviar variables, por eso queria meter la salida del comando en una variable. Ahora buscare sobre como mandar el archivo por los sockets, gracias

chuidiang

  • Miembro MUY activo
  • ***
  • Mensajes: 123
  • Nacionalidad: es
    • Ver Perfil
    • http://www.chuidiang.com
Re: system("comando") a variable
« Respuesta #5 en: Lunes 1 de Septiembre de 2003, 09:17 »
0
Por un socket puedes enviar una estructura de datos que quieras, siempre que al otro lado sepan que estructura están recibiendo.

Para enviar un archivo, puedes enviar el nombre del fichero para que el otro lo lea ,siempre que lo tenga accesible.

Si no lo tiene accesible, entonces debes enviar cadenas de caracteres que corresponderían a líneas de texto del archivo. Si es binario, enviarias arrays de bytes.

En www.geocities.com/chuidiang tienes un pequeño ejemplo de cómo se construyen habitualmente estas estructuras (mensajes) que circulan por los sockets.

Se bueno.

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: system("comando") a variable
« Respuesta #6 en: Lunes 1 de Septiembre de 2003, 22:19 »
0
hola, gracias, tu pagina esta muy bien, pero, es solo para programar en unix?? el primer manual sirve tambien para windows,no?

chuidiang

  • Miembro MUY activo
  • ***
  • Mensajes: 123
  • Nacionalidad: es
    • Ver Perfil
    • http://www.chuidiang.com
system("comando") a variable
« Respuesta #7 en: Martes 2 de Septiembre de 2003, 09:04 »
0
Bueno, yo los ejemplos de código los hago en linux, así que sé que ahí funcionan (al menos en mi PC).
Todo el tema de sockets es muy similar para windows, los coneptos son los mismos y la sintaxis de las funciones también. Creo que la única diferencia es que hay que "abrir" la librería de winsocket.dll antes de usarla y lo demás es igual.

El ejemplo simple de socekts seguramente no compila directamente en windows, aunque las modificaciones serían mínimas.

Si tienes interés en ver si algo funciona en windows, lo único que tienes que hacer es ver si el visual c++ (o c++ builder o el que sea) tienen las funciones que utilizo en los ejemplos.

Se bueno.