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
Por el metodo del menor esfuerzo es el siguiente
/*
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);
}
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...
Hola

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

Visita
http://blog.txipinet.com/index.php/2006/...-linux-vii
Si tienes alguna duda postea que estamos pa servirte.
Exitos
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.
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
