Pracuję nad projektem C dla systemu Linux i mam problem z działaniem deskryptorów plików.Zmiana uprawnień do odczytu/zapisu deskryptora pliku
Mam sierocym deskryptor pliku (plik był otwarty(), a następnie unlink() 'd ale fd jest nadal dobry), który ma uprawnienia tylko do zapisu. Oryginalny plik kopii zapasowej miał pełne uprawnienia (utworzone za pomocą S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), ale niestety plik został otwarty z O_WRONLY. Czy możliwe jest zduplikowanie deskryptora pliku i zmiana kopii na O_RDWR?
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???----
Z góry dzięki! -Andrew
'fcntl (fd, F_SETFL, fcntl (fd, F_GETFL) | O_RDWR))' * wygląda * tak jakby to było, z wyjątkiem strony man, która mówi, że to nie zadziała. Sądzę, że jest jakiś powód, dla którego jądro "potrzebuje", aby to było niemożliwe? – aschepler
, więc dlaczego otwierasz go w trybie wronym, jeśli planujesz go przeczytać? –
Lub po prostu otwórz ponownie, używając poprawnych flag. – jweyrich