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

Ejemplo _popen

Estas en el tema de Ejemplo _popen en el foro de C/C++ en Foros del Web. Estoy realizando un ejemplo con _popen tan simple como este. Código: #include <stdlib.h> #include <iostream> int main (int argc, char *argv[]){ FILE *chkdsk; const int ...
  #1 (permalink)  
Antiguo 04/08/2014, 03:10
 
Fecha de Ingreso: abril-2012
Mensajes: 4
Antigüedad: 12 años, 6 meses
Puntos: 0
Ejemplo _popen

Estoy realizando un ejemplo con _popen tan simple como este.

Código:
#include <stdlib.h>
#include <iostream>

int main (int argc, char *argv[]){
    FILE   *chkdsk;
    const int MAX_BUFFER = 2048;
    char buffer[MAX_BUFFER];

   chkdsk = _popen( "java -version", "rt" );
   if (chkdsk == NULL) perror ("Error al ejecutar el comando");
   else{
       while( !feof( chkdsk ) ){
                a++;
               if( fgets( buffer, MAX_BUFFER, chkdsk ) != NULL ){
					puts(buffer);
               }else{
                    printf("\nfgets no recupero nada\n");
                }
	}//While
    }//else
  system("pause");
  fclose(chkdsk); 
 return 0;
}
Pero no consigo que fgets recupere nada.
  #2 (permalink)  
Antiguo 04/08/2014, 07:38
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: Ejemplo _popen

pues no le veo nada raro a tu programa. Es que ni todos los programas tienen nada que mostrar. Si cambias "java -version" por "ipconfig" veras que te imprime toda la ip ;)
No se si es eso lo que quieres.
Por cierto creo que eso es tema de pipes o en español (tuberias).
Código C++:
Ver original
  1. #include <stdlib.h>
  2. #include <iostream>
  3.  
  4. int main ( int argc, char *argv[] ) {
  5.     FILE   *chkdsk;
  6.     const int MAX_BUFFER = 2048;
  7.     char buffer[MAX_BUFFER];
  8.    
  9.     chkdsk = _popen ( "ipconfig", "rt" );
  10.    
  11.     if ( chkdsk == NULL ) perror ( "Error al ejecutar el comando" );
  12.     else {
  13.         while ( !feof ( chkdsk ) ) {
  14.             //a++;
  15.             if ( fgets ( buffer, MAX_BUFFER, chkdsk ) != NULL ) {
  16.                 puts ( buffer );
  17.             } else {
  18.                 printf ( "\nfgets no recupero nada\n" );
  19.             }
  20.         }//While
  21.     }//else
  22.    
  23.     system ( "pause" );
  24.     fclose ( chkdsk );
  25.     return 0;
  26. }
La letra a no estaba declarada y la he anulado luego la arreglas si eso ;)
Si no es eso lo que quieres pues ni idea jeje.
Suerte.

Etiquetas: ejemplo, int
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 12:56.