popen() problem windows



  • Hallo,

    char* popen_ (char* command)
    {
          char buf [BUFFER_SIZE];
          char ret [BUFFER_SIZE*10];
    
          memset(buf, '\0', sizeof(buf));
          memset(ret, '\0', sizeof(ret));
    
          FILE *p = popen(command, "r");
          if(p==NULL)
            return "popen_error";
    
          while(feof(p) == 0)
          {
            fgets(buf, 1000, p);
            strcat (ret, buf);cout << ret << endl;
          } 
        //  cout << ret << endl;
          return ret;
    }
    

    Ausgabe beim dir Befehl

    2 Verzeichnis(se), 34.663.030.784 Bytes frei

    Macht das Sinn?
    Wo liegt der Fehler?



  • Habs jetzt so abgeändert:

    char* popen_ (char* command)
    {
          char buf [BUFFER_SIZE];
          char ret [BUFFER_SIZE*10];
    
          memset(buf, '\0', sizeof(buf));
          memset(ret, '\0', sizeof(ret));
    
          FILE *p = popen(command, "rt");
          if(p==NULL)
            return "popen_error";
    
          while(feof(p) == 0)
          {
            fgets(buf, 1000, p);
            strcat (ret, buf);
          } 
          cout << ret << endl;
          return ret;
    }
    

    Und jetzt zeigt er mir jede Ausgabe eines Befehls 2x an!


Anmelden zum Antworten