Enviar Respuesta  Enviar Tema 
Necesito Yudad par hacer un programa en c que ejecute un comando en el shell
Autor Mensaje
david_dx
Usuario PL


Mensajes: 1
Grupo: Registrado
Registro en: May 2006
Estado: Sin Conexión
Reputación: 0
Mensaje: #1
Question  Necesito Yudad par hacer un programa en c que ejecute un comando en el shell

Saludos cordiales
Agradeceria mucho su ayuda si alguien conoce alguna forma de hacer que en el programa escrito en c++ ejecute una instruccion en el shell como por ejemplo ls -l y el resultado pueda almacenarlo en una variable para trabajar con estos datos. en el ejemplo que pongo deberia tener en la variable los nombres desplegados con este comando por favor espero su respuesta
Att: David

05-23-2006 09:00 PM
Encuentra todos los mensajes de este usuario Cita este mensaje en tu respuesta
RompeRatones
Usuario PL


Mensajes: 78
Grupo: Registrado
Registro en: May 2005
Estado: Sin Conexión
Reputación: 4
Mensaje: #2
RE: Necesito Yudad par hacer un programa en c que ejecute un comando en el shell

Por el metodo del menor esfuerzo es el siguiente

Código:
/*
Archivo: ejemplo.c
compilar: gcc -o ejemplo ejemplo.c
ejecutar: ./ejemplo
que hace el programa:  usa system para mandar la salida a un archivo temporal y luego la lee

*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *punt;
char texto[50];
char *c;

system("ls -l  >/tmp/ejemplo.log");
punt = fopen("/tmp/ejemplo.log","r");
do
{
c = fgets(texto, 50, punt);
if (c != NULL)
printf("%s",texto);
/* En este lugar la variable texto ya contiene la  primer linea  */
/* en el proximo ciclo tendra lo que dice la linea siguiente */

}
while (c != NULL);
fclose(punt);
return (0);
}


05-23-2006 10:35 PM
Visita el website del usuario Encuentra todos los mensajes de este usuario Cita este mensaje en tu respuesta
warp
Q


Mensajes: 2,009
Grupo: Registrado
Registro en: Jun 2005
Estado: Sin Conexión
Reputación: 10
Mensaje: #3
RE: Necesito Yudad par hacer un programa en c que ejecute un comando en el shell

Bueno tenes un par de posibilidades, podes usar ncurses o podes usar popen o system....
este "manual" esta muy Bueno, sería cuestion de que lo leas, es bastante amplio http://www.erlenstar.demon.co.uk/unix/faq_toc.html otra opción puede ser http://pstreams.sourceforge.net/doc/ (este último la verdad no se si funca nunca lo use....).... sino de última podes hacer que c ejecute un script sh y el resultado lo grabe en un archivo (el que lo graba es el script sh), y luego que c lea el archivo, esto es lo que te dejo romperatones.....

si necesitas ayuda con el codigo avisame, mañana te doy una mano, lo que pasa que leí tarde este post 23hs....

saludos...


05-23-2006 11:11 PM
Visita el website del usuario Encuentra todos los mensajes de este usuario Cita este mensaje en tu respuesta
angelm
Ututo-Developers


Mensajes: 308
Grupo: Registrado
Registro en: May 2006
Estado: Sin Conexión
Reputación: 5
Mensaje: #4
RE: Necesito Yudad par hacer un programa en c que ejecute un comando en el shell

Hola 1-wink
Lo que intentas hacer se llama tuberias osea pipe.
C /C++ se valen de funciones para interactuar con el shell, sea para leer o escribir en el el 1-wink
Visita http://blog.txipinet.com/index.php/2006/...-linux-vii
Si tienes alguna duda postea que estamos pa servirte.
Exitos


La Inteligencia es la mano de los Big-Man
----------------------------------
Angel Matias Orozco
Team GNU/Ututo Developers
12-21-2006 12:57 AM
Encuentra todos los mensajes de este usuario Cita este mensaje en tu respuesta
angelm
Ututo-Developers


Mensajes: 308
Grupo: Registrado
Registro en: May 2006
Estado: Sin Conexión
Reputación: 5
Mensaje: #5
RE: Necesito Yudad par hacer un programa en c que ejecute un comando en el shell

El siguiente código es una muestra clara de cómo se puede hacer una llamada utilizando tuberías y procesos hijo, de forma sencillísima:
---------------------------------------------------
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <limits.h>

#define SIZE PIPE_BUF

int main(int argc, char *argv[])
{
  FILE *file;
  char *command= "ls .";
  char buffer[SIZE];

  file=popen( command, "r" );

  while( !feof( file ) )
  {
    fscanf( file, "%s", &buffer );
    printf( "%s\n", buffer );
  }

  pclose( file );

  return 0;
}
----------------------------------------------------
Nuestro programa simplemente crea un proceso hijo que será reemplazado por una llamada al comando ?ls .?, y se nos devolverá un puntero a un fichero que será el resultado de ese comando. Leemos ese fichero y lo escribimos por pantalla. Al finalizar, cerramos la tubería con pclose().

Lee tambien el post anterior y especifico web.


La Inteligencia es la mano de los Big-Man
----------------------------------
Angel Matias Orozco
Team GNU/Ututo Developers
12-21-2006 01:01 AM
Encuentra todos los mensajes de este usuario Cita este mensaje en tu respuesta
Snoopydog
Usuario PL


Mensajes: 27
Grupo: Registrado
Registro en: Jun 2007
Estado: Sin Conexión
Reputación: 0
Mensaje: #6
RE: Necesito Yudad par hacer un programa en c que ejecute un comando en el shell

Hola

Bueno io insisto si deseas trabajar con shell se puede con la funcion system() y sprintf(), sin embargo esto es para C y no se si C++ tamb la tenga, si la tiene entonces con esas 2 funciones puedes mandar tanto cadenas de caracteres como enteros a un shell, ahora si lo que kieres es alamcenar el resultado solo se me ocurre guardandolos en un txt, por ejemplo:
ls -l >> archivo.txt

saludos 1-grin

10-05-2007 08:14 PM
Encuentra todos los mensajes de este usuario Cita este mensaje en tu respuesta
Enviar Respuesta  Enviar Tema 

Posibles Temas Similares...
Tema: Autor Respuestas: Vistas: Ultimo Mensaje
  como junto un script del shell con c? gastonsechen 10 1,743 10-04-2007 12:44 PM
Ultimo Mensaje: Snoopydog
Question Ayuda necesito hacer un programa que diseñe iconos nut_lol 10 1,150 04-12-2007 09:13 AM
Ultimo Mensaje: warp
  Necesito compilar en 32bit tomtec 5 1,328 09-01-2005 09:45 AM
Ultimo Mensaje: Hermes
  Programa malvado???? warp 0 781 07-03-2005 05:03 PM
Ultimo Mensaje: warp

Ver la Versión para Impresión
Mandar este Tema a algún Amigo
Subscríbete a este Tema | Agrega este Tema a Tus Favoritos

Salto de Foro: