Ich arbeite an einem Linux C-Projekt und habe Probleme beim Arbeiten mit Dateideskriptoren.Lese-/Schreibberechtigungen für einen Dateideskriptor ändern
Ich habe eine verwaiste Datei-Deskriptor (die Datei war open() 'd dann unlink()' d aber die fd ist immer noch gut), die nur Schreibberechtigung 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?
psudo-Code:
//open orphan file
int fd = open(fname, O_WRONLY, ...)
unlink(fname)
//fd is still good, but I can't read from it
//...
//I want to be able to read from orphan file
int fd2 = dup(fd)
//----change fd2 to read/write???----
Vielen Dank im Voraus! -Andrew
'fcntl (fd, F_SETFL, fcntl (fd, F_GETFL) | O_RDWR))' * scheint * als wäre es die Sache, außer die Manpage sagt ausdrücklich, dass das nicht funktionieren wird. Ich denke, es gibt einen Grund, warum der Kernel dies "braucht", um unmöglich zu sein. – aschepler
also warum öffnest du es im wrony-modus, wenn du vorhast, es zu lesen? –
Oder öffnen Sie es einfach erneut mit den richtigen Flags. – jweyrich