Ich arbeite an einem Linux-C-Projekt und habe Probleme beim Arbeiten mit Dateideskriptoren.
Ich habe einen Waisen-Dateideskriptor (die Datei war open () 'd dann unlink ()' d, aber die fd ist immer noch gut), die schreibgeschützte Erlaubnis hat. Die ursprüngliche Sicherungsdatei hatte vollständige Berechtigungen (erstellt mit S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), aber leider wurde die Datei mit O_WRONLY geöffnet. Ist es möglich, den Dateideskriptor zu duplizieren und die Kopie in O_RDWR zu ändern?
psudocode:
%Vor%Vielen Dank im Voraus! -Andrew
Nein, es gibt keine POSIX-Funktion, um den Öffnungsmodus zu ändern. Sie müssen es im Lese- / Schreibmodus öffnen. Da Sie jedoch eine temporäre Datei erstellt haben, empfehle ich Ihnen dringend, mkstemp zu verwenden. Diese Funktion öffnet die Datei ordnungsgemäß im Lese- / Schreibmodus und entkoppelt sie . Vor allem vermeidet es eine Race-Bedingung beim Benennen und Erstellen der Datei, wodurch eine Schwachstelle bei der Erstellung von temporären Dateien vermieden wird.