Warum liefert open() einen Fehler?



  • Hallo,

    Ich versuche eine Datei zu erstellen und in diese etwas rein zu schreiben.

    char *filename = argv[1];
    
    		int file;
    
    		file = open("test.txt", O_RDWR, 0644);
    
    		if (file==-1)
    		{
    			fprintf(stderr, "Error while opening file!");
    			return EXIT_FAILURE;
    		}
    
    		write("test", file, sizeof((*filename)*4));
    

    Das gibt mir immer den filedeskriptor -1, und mein Programm beendet sich mit der Fehlermeldung ("Error while opening file!").

    Ich arbeite mit MacOSX und kenne mich leider wenig aus. Brauch ich irgendwelche speziellen Rechte um die Datei erstellen zu dürfen?

    Und dann auch noch ne kurze Frage zu dem write...der dritte Parameter gibt an wieviele Bytes geschrieben wurden, oder? Dann müsste das so stimmen, oder?

    Danke!



  • kthesun schrieb:

    Das gibt mir immer den filedeskriptor -1, und mein Programm beendet sich mit der Fehlermeldung ("Error while opening file!").

    weil vielleicht test.txt gar nicht existiert? Du brauchst wahrscheinlich auch die O_CREAT Flag. Versuchs mal mit

    file = open("test.txt", O_RDWR | O_CREAT, 0644);
    

    btw: dein problem hat mit ANSI C nichts zu tun.


Anmelden zum Antworten