Problem mit fopen



  • Hallo,

    ich habe ein Problem mit meinem Skript. Wenn ich eine Datei mit fopen öffnen möchte bekomme ich die Fehlermeldung:

    nagios@server:/usr/lib/nagios/plugins> ./check_procs /usr/lib/nagios/cfg/plugin_param.ini
    Speicherzugriffsfehler
    nagios@server:/usr/lib/nagios/plugins>

    😕

    woran liegt das???? nur so ganz neben bei 🙂 das ding wird unter Suse9.1 ausgeführt. (komisch unter Solaris 9 fuktioniert es bestens! 😕 )

    AUSZUG AUS MEINEM PROG:

    int main(int argc, char* argv[])
    {
    	if (argv[1]==NULL){
    		cout << "Keine Parameter übergeben )-:" << endl;
    		return 1;
    	}
    
    [...]
    
    FILE   	*stream;
    FILE 	*tmp;  
    FILE *file_inifile;
    std::string str_ini_file; //= "/usr/local/lib/nagios/cfg/plugin_param.ini";
    std::string str_line;
    std::string server_path;
    
    str_ini_file += argv[1];
    
    [...]
    
    /*--------------------------------------------------------------------------*/
    /*Öffnet die Datei str_ini_file und durchsucht diese nach Key-Value Pairs */
    
    if ((file_inifile = fopen(str_ini_file.c_str(), "r")) != NULL) // AN DIESER STELLE
    {
               while (!feof(file_inifile))
               {
                           fgets( line, 1000, file_inifile);
                           str_line = line;
    
                           while(line[0] == 32)
                           {
                                       str_line = str_line.substr(1,str_line.length());
                                       strcpy(line,str_line.c_str());
    
                           }if (line[0] == '[')
                           	{
                                       section[i_section_count].str_section = line;
                                       i_section_count++; 
    
                           	}else if (!(line[0]==';' || line[0] == 10 || line[0] == 13 || feof(file_inifile)))
                           		{
                                       section[i_section_count-1].str_value[section[i_section_count-1].i_value_count] = line;
                                       section[i_section_count-1].str_value[section[i_section_count-1].i_value_count] = section[i_section_count-1].str_value[section[i_section_count-1].i_value_count].substr(0,section[i_section_count-1].str_value[section[i_section_count-1].i_value_count].length()-1);
                                       section[i_section_count-1].i_value_count++;
                          		 }
               }
    
    fclose(file_inifile);
    
    [...]
    

    Gruß
    Navigato



  • Kleine dumme Frage: Hast du das Plugin "check_procs" von der solaris kiste übernommen? oder ist das von der Nagios Homepage?



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Linux/Unix in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • @Forum Admins: ich glaube dass der Thread fälschlicherweisse verschoben worden ist. Es geht hier um C/C++ Programmnierung unter Linux/Unix. 🙂

    @Tobi_E_0812
    Nein das ist eine "Eigenkreation" nur der Name ist der selbe. Ich habe nur die cpp datei von dem Solaris Rechner übernommen, und auf der Linux Kiste neu kompiliert.



  • Nein, der Thread wurde schon richtig verschoben. Alles was du benutzt ist ISO C++. Nix Unix spezifisches.

    Aber hast du dir das Problem mal mit einem Debugger angeguckt? So kann ich nicht direkt sehen, was da schief gehen könnte.



  • @kingruedi
    ja ich habe das im debugger laufen lassen mit dem ergebnis alles einwandfrei.

    ich vermute jetzt das die gcc version(3.2) daran schuld sein könnte.
    kann jamand meine Vermutung bestätigen oder auch nicht??

    Gruß
    Navigato


Anmelden zum Antworten