[erledigt]Wo finde ich die errno- Bedeutungen?



  • Werte Forumsbesucher,

    der Titel sagt eigentlich schon alles. Hintergrund ist ein fehlgeschlagenes fopen(), also will ich errno ausgeben, also

    #include <errno.h>
    // ...
    	openfile = fopen(openname, attributes);
    	if (!openfile)
    	{
    		printf("\nerror #%d opening file ", errno);
    		printf(openname);
    		printf(" for ");
    		printf(attributes);
    		printf("\n");
    	}
    

    Jetzt steht lapidar "2" da und ich finde nirgendwo, was das bedeutet. Nichts bei der Compiler- Doku und bei den C- Referenzen jede Menge angeblich vorbelegter Makro- Definitionen, aber nichts von Zahlenwerten. Oder kommt's vom OS, das wär' dann Windoof.

    Den Fehler hab' ich allerdings schon gefunden, er dürfte "file not existent" oder so lauten und die Trottelnummer möchte ich euch nicht vorenthalten:
    Eigentlich steht ja schon kuhgroß das Problem da, es bestand in den Öffnungsattributen, ich wollte die Datei zum Schreiben öffnen, hab's aber mit "rb" geöffnet. 🤡 Und weil ich Faulpelz keine Fehlerauswertung bei fwrite vornehme, fällt mir nicht auf, daß ich seit Ewigkeiten immer den gleichen uralten Satz temporärer Dateien durchjage 🙄 . Erst, als ich wg. eines anderen Problems mal das Verzeichnis ausgeleert habe, hat das Ding nicht mehr getan.
    Darf gar nicht sagen, wie lang mich das beschäftigt hat ... man hat ja sonst nichts zu tun 😉 .

    OK, aber wenn jmd. mir einen guten Tip zu errno hat, wär's mir der Zukunft wegen lieb, da mal einen Link anzulegen ... Dankeschön!

    Edit & PS: ENOENT, ESRCH etc. ergeben für mich natürlich auch keinen Sinn.



  • ^^gibts da nicht die funktion 'strerror'?
    🙂



  • ;fricky schrieb:

    ^^gibts da nicht die funktion 'strerror'?
    🙂

    Bingo!

    Und wenn man am Anfang des Programms setlocale(LC_ALL,""); aufruft, gibt ess die Tüte sogar in Deutsch.



  • Big Brother schrieb:

    ;fricky schrieb:

    ^^gibts da nicht die funktion 'strerror'?
    🙂

    Bingo!

    Und wenn man am Anfang des Programms setlocale(LC_ALL,""); aufruft, gibt ess die Tüte sogar in Deutsch.

    Bzw. in der gerade aktuell eingestellten Sprache des OS.

    Gruß,
    B.B.



  • Hier ohne, hier mit Trottelnummern.



  • Hier hast du noch nein Link:
    http://www.finalcog.com/c-error-codes-include-errno
    Ich bevorzuge es aber mir da keinen Kopp zu machen,
    was da alles drin stehen kann und was nicht und überlasse
    das strerror(errno);

    Gruß,
    B.B.



  • Heya Leute,

    nach strerror() hab' ich gesucht und es funktioniert so, wie ich's brauchen kann. 🙂 .
    Fragt sich nur, warum kaum wo etwas davon dasteht und auch meine C- Lieblingsreferenzen von errno.h nicht gleich weiterverlinken. Wie seid ihr eigentlich draufgekommen?

    Jedenfalls kann ich so damit wenigstens was anfangen.

    Danke nochmals! 🙂



  • pointercrash() schrieb:

    Wie seid ihr eigentlich draufgekommen?

    ich hab' sie irgendwann mal verwendet (linux-treiber programmiert oder so, sonst wüsst ich auch nicht) und aus irgendeinem grund hat mein kurzzeitgedächtnis sie nicht haben wollen.
    🙂



  • Irgenwann vor 10 Jahren oder so zufällig beim C-Rumspielen und beim MSDN Beispieleschmökern drüber gestolpert.



  • Liegt wohl ganz einfach daran, dass es sich dabei um einen Teil der POSIX Api handelt und nichts mit C zu tun hat. Infos über errno.h findet man sobald man sich einmal mit der POSIX Api beschäftigt und dementsprechend in allen Tutorials, Büchern und Manpages zur POSIX Api.



  • Tippgeber schrieb:

    Liegt wohl ganz einfach daran, dass es sich dabei um einen Teil der POSIX Api handelt und nichts mit C zu tun hat. Infos über errno.h findet man sobald man sich einmal mit der POSIX Api beschäftigt und dementsprechend in allen Tutorials, Büchern und Manpages zur POSIX Api.

    Ne das ist schon Teil von ISO C. Aber in jeder guten Referenz verweist man: errno auch auf strerror.



  • rüdiger schrieb:

    Tippgeber schrieb:

    Liegt wohl ganz einfach daran, dass es sich dabei um einen Teil der POSIX Api handelt und nichts mit C zu tun hat. Infos über errno.h findet man sobald man sich einmal mit der POSIX Api beschäftigt und dementsprechend in allen Tutorials, Büchern und Manpages zur POSIX Api.

    Ne das ist schon Teil von ISO C. Aber in jeder guten Referenz verweist man: errno auch auf strerror.

    Tatsächlich, soweit ich das auf opengroup.org nachgelesen habe aber nur drei oder vier Stück. Und "The New C Standard" erwähnt errno nur zwei mal auf über 1000Seiten. Dementsprechend bedeutunglos scheint errno ohne POSIX also zu sein.



  • Alles klar.


Log in to reply