Estoy trabajando en un proyecto de linux C y tengo problemas para trabajar con los descriptores de archivos.Cambiar los permisos de lectura/escritura en un descriptor de archivo
Tengo un descriptor de archivo huérfano (el archivo estaba abierto() 'd luego desvincular()' d pero el fd sigue siendo bueno) que tiene permiso de solo escritura. El archivo de respaldo original tenía permisos completos (creado con S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), pero lamentablemente el archivo se abrió con O_WRONLY. ¿Es posible duplicar el descriptor de archivo y cambiar la copia a O_RDWR?
psudo-código:
//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???----
Gracias de antemano! -Andrew
'fcntl (fd, F_SETFL, fcntl (fd, F_GETFL) | O_RDWR))' * parece * como si fuera la cosa, excepto que la página del manual dice específicamente que no funcionará. Supongo que hay alguna razón por la cual el kernel "necesita" que esto sea imposible. – aschepler
entonces, ¿por qué lo abre en modo wronly si planea leerlo? –
O simplemente ábralo de nuevo usando las banderas correctas. – jweyrich