Wie Dateizugriff verweigern??
-
Hallo
Wenn ich meine Konsolen-Anwendung mehrfach starte, hat jeder zugriff auf die gleiche datei und wird gegenseitig überschrieben.. wie kann ich das vermeiden?
Ich dachte wenn ich eine datei mit Modus W öffne und nicht mit fclose schliesse, ist der zugriff für andere programme gesperrt, was aber irgendwie nicht der fall ist.Komischerweise kann ich die Datei aber nicht mit einem Text-Editor öffnen und speichern während das Konsolenprogramm offen ist -> Zugriffsfehler.
Aber die einzelnen Konsolen-instanzen scheint das nicht zu stören und haben alle zur gleichen zeit schreibrechte und schreiben in die Datei???..Hab hier mal ein beispiel um die Zugriffsrechte zu testen..
int main() { const char * const filename = "test.txt"; FILE *schreiben_stream; if ((schreiben_stream=fopen(filename,"w")) == NULL) { printf("\n Fehler -> Kein Zugriff möglich \n"); } else { fprintf(schreiben_stream,"%s","TEST-NR1\n"); printf("Datei: %s -> wurde geschrieben.\n",filename); } printf("\n WARTE zum Schliessen n"); getchar(); fclose(schreiben_stream); return 0; }
-
wenn mich nicht alles täuscht geht das mit fopen o.ä. nicht. falls du windoofs benutzt: http://msdn.microsoft.com/en-us/library/aa365202(VS.85).aspx
-
Hi!
Vllt. eine etwas portablere Variante mit dem O_EXCL Dingen:#include <fcntl.h> // for open() #include <cerrno> // for errno #include <cstdio> // for perror() int fd; fd=open("password.lck", O_WRONLY | O_CREAT | O_EXCL)
Quelle:
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=144Gruß,
B.B.
-
aha!
ok werd ich probieren.
dachte der zugriff wird automatisch blockiert, weil man immer soviele abfragen in beispielbücher liest, wenn man dateien öffnet...
hab zwei programmierbücher zuhause und da steht sowas nicht drinnen..tznaja danke
PS:
wegen dem hier http://msdn.microsoft.com/en-us/library/aa365202(VS.85).aspx
Da steht eine Möglichkeit wie man den Zugriff blockieren kann.
Warum zeigt mir den das Notepad in windows an das ich die datei nicht bearbeiten kann, wenn ich noch garkeine blockierung eingebaut habe??
Prüft hier notepad vielleicht ob die datei irgendwo geöffnet ist?
-
kann sein, das deine ide im debugmodus lockt.
-
nö.. hab die datei als release compiliert und dann aufgerufen.. also nicht in der IDE..