brauch hilfe mit popen



  • ich hab gleich zwei fragen!
    1.) warum kein

    FILE *configure = popen("./configure " + com, "r");
    

    2.) ich will das der configure text auf der console zur selben zeit wie der auf meinem programm angezeigt wird! (ich hoffe ihr kennt linux; configure)
    das hab ich bisher:

    string conf_pipe(QString com)
    {
        char buffer[80096];
        QString Sbuffer;
    
        FILE *configure = popen("./configure " + com, "r");
        if(configure == NULL) {
    	exit(0);
    	cout<<"Datei nicht gefunden!"<<endl;
        }
        while( !feof( configure ) ) {
    	if( fgets( buffer, 8096, configure ) != NULL );
    	Sbuffer += buffer;
        }
    
        return Sbuffer;
    }
    

    MFG



  • ich meinte zu 1.)

    FILE *configure = &popen("./configure " + com, "r");
    


  • enigma_2 schrieb:

    FILE *configure = &popen("./configure " + com, "r");
    

    1. kannst du keinen FILE** einen FILE * zuweisen.
    2. "./configure " + com funktioniert auch nicht.
    würde es folgendermassen versuchen.

    string conf_pipe(QString com){
        char buffer[80096];
        QString Sbuffer;
        com = com.prepend("./configure ");
        FILE *configure = popen( com.ascii(), "r");
      ....
    

    ps. kenn mich mit QString nicht aus und weiis nicht ob man den wirklich so verwenden kann.
    Kurt



  • ich weiß zwar noch nicht wie man gebacken bekommt das alles synchron zur konsolenausgabe angezeigt wird aber das ist nicht wichtig. problematisch ist nur, dass das einlesen sehr lange dauert!!! circa 20-40s nach dem ende des ausführens des configure scripts.
    auf jeden fall erstmal damke wegen der string-sache!

    string conf_pipe(QString com){
        char buffer[80096];
        QString Sbuffer;
        com = com.prepend("./configure ");
        FILE *configure = popen( com.ascii(), "r");
    
        if(configure == NULL) {
    	exit(0);
    	cout<<"Datei nicht gefunden!"<<endl;
        }
    
        while( !feof( configure ) ) {
    	if( fgets( buffer, 8096, configure ) != NULL );
    	Sbuffer += buffer;
        }
    
        return Sbuffer;
    }
    

Anmelden zum Antworten