ofstream probleme !?



  • Guten Abend,
    ich bin an einem Code dabei der mir probleme verursacht , und zwar habe ich hier 3 Funktionen erstellt

    void errorwrite (string errorstream)
        {
         ofstream errordatei("/tmp/homecontrol.error",ios::app);
         errordatei << errorstream << "\n";
         errordatei.close();
        }
    
    void read_sender (int sendernr) // senderstream aus Datei lesen und zuordnen
        {
         ostringstream cmd;
         cmd << "Sender" << sendernr;
         string bufferstring;
         int big_string , pos_one;
         ifstream senderstreamin("/tmp/homecontrol.conf",ios::in);
         if (!senderstreamin.is_open())
           {
            errorwrite("/tmp/homecontrol.conf konnte in Funktion read_sender nicht geoeffnet werden"); // es wird nur dieser von beiden geschrieben
           }
    
         while (!senderstreamin.eof())
              {
               getline(senderstreamin, bufferstring, '\n');
               if (bufferstring.find(cmd.str().c_str()) !=string::npos)
                 {
                  big_string = bufferstring.size();
                  pos_one = bufferstring.find("=");
                  bufferstring.erase(0,pos_one + 1);
                  ofstream senderstreamout("/tmp/mpg123in.pipe",ios::out);
                  if (!senderstreamout.is_open())
                    {
                     errorwrite("/tmp/mpg123out.pipe konnte in Funktion read_sender nicht geöffnet werden");  // dieses ist noch nicht getestet ob cmd zuordnung gteht.
                    }
                  senderstreamout << bufferstring;
                  senderstreamout.close();
                 }
               bufferstring.erase();
              }
         senderstreamin.close();
        }
    
    void radiodisplay ()  // Radiopipe pruefen/oeffen und stream für sender&title erstellen
        {
         string bufferstring;
         int big_string , pos_one , pos_two;
         ifstream radiostreamout("/tmp/mpg123out.pipe",ios::in);
         if (!radiostreamout.is_open())
           {
            errorwrite("/tmp/mpg123out.pipe konnte in Funktion radiodisplay nicht geoeffnet werden"); // dieses wird nur geschrieben wenn ich read_sender nicht aufrufe
           }
         while (!radiostreamout.eof())
              {
               getline(radiostreamout, bufferstring, '\n');
               if (bufferstring.find("ICY-META") != string::npos)
                 {
                  big_string = bufferstring.size();
                  pos_one = bufferstring.find("'");
                  bufferstring.erase(0,pos_one + 1);
                  pos_two = bufferstring.find(";");
                  bufferstring.erase(pos_two - 1);
                  pthread_mutex_lock (&radiomutex);
                  interpret_title = bufferstring;
                  pthread_mutex_unlock (&radiomutex);
                 }
               else if (bufferstring.find("ICY-NAME") != string::npos)
                      {
                       big_string = bufferstring.size();
                       pos_one = bufferstring.find(":");
                       bufferstring.erase(0,pos_one + 2);
                       pthread_mutex_lock (&radiomutex);
                       radiosender = bufferstring;
                       pthread_mutex_unlock (&radiomutex);
                      }
               bufferstring.erase();
               sleep (2);
              }
         radiostreamout.close();
         pthread_mutex_lock (&radiomutex);
         radiosender.erase();
         interpret_title.erase();
         pthread_mutex_unlock (&radiomutex);
        }
    

    wenn ich nun die letzten beiden funktionen im extra thread starte schreibt er mir nur den ersten fehler der read_sender funktion aber nicht den des Radiodisplay. Klammere ich die read_sender funktion aus dann schfreibt er mir nur die funktion des Radiodisplay.

    Ich würde gerne natürlich beide Fehlermeldungen abgespeichert bekommen.

    hätte jemand da evtl eine Idea ?

    Mfg Michael



  • Zu der Frage fällt mir nur dieser Link ein:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html

    😉



  • nagut diese Seite kenne ich,
    es ist sicherlich kein reiner c++ code :-(. möchte später diese Funktionen
    noch komplett umgestalten,
    oder habe ich es so umständlich beschrieben was ich gerne möchte ?

    mfg Michael


Anmelden zum Antworten