¿Cómo puedo verificar si un archivo tiene permisos de lectura en C?c lea los permisos de un archivo
Respuesta
Use access(2)
en POSIX. En el estándar C, lo mejor que puede hacer es tratar de abrirlo con fopen()
y ver si tiene éxito.
If fopen()
vuelve NULL
, se puede tratar de utilizar errno
de distinguir entre el "no existe archivo" (errno == ENOENT
) y "Permiso denegado" (errno == EACCES
) casos - pero desafortunadamente esos dos errno
valores sólo se define por POSIX bien.
(Incluso en POSIX, en la mayoría de los casos lo mejor que puede hacer es tratar de abrir el archivo, y luego mirar por qué ha fallado, porque el uso de access()
introduce una condición de carrera obvia).
utilizar la función access():
if (access(pathname, R_OK) == 0)
{
/* It's readable by the current user. */
}
errno
se establecerá en ENOENT
si no existe el archivo o EACCES
si existe pero no es accesible para el usuario actual. Consulte the manual page para obtener más códigos de error.
Soy un fan de usar stat(), yo mismo.
El interrogador preguntó cómo leer los permisos de un archivo. La función stat() devuelve los permisos del archivo. La función fstat() devuelve los permisos del archivo dado su descriptor de archivo abierto. – bearvarine
- 1. Lea los permisos de un directorio en C#
- 2. Los permisos de archivo no heredan los permisos de directorio
- 3. Lea del archivo de Excel en C
- 4. Multithreading un archivo masivo lea
- 5. Lea el archivo codificado UNIX con C#
- 6. Comprobar los permisos del archivo
- 7. C#, lea las estructuras del archivo binario
- 8. lea un archivo MSWord en R
- 9. Lea los marcadores de Firefox con C#
- 10. Lea un archivo con caracteres Unicode
- 11. Modificar los permisos del archivo de subversión
- 12. Lea los nombres de los archivos de un directorio
- 13. Comprobando los permisos del propietario del archivo
- 14. Lea el contenido de los archivos RAR usando C#
- 15. Lea los metadatos de un mp3
- 16. Haskell: lea un archivo por línea
- 17. Lea un archivo línea por línea
- 18. Lea y sobrescribir un archivo en Python
- 19. Lea los metadatos del archivo de imagen con javascript
- 20. Lea un número de versión de un archivo en configure.ac
- 21. Lea el archivo con Rhino
- 22. Lea un archivo zip dentro del archivo zip
- 23. Shell: lea un archivo y repítalo a otro archivo
- 24. Copie un archivo con sus permisos originales
- 25. Lea todo el archivo ASCII en C++ std :: string
- 26. Lea los datos binarios de Console.In
- 27. Lea el archivo XML en XmlDocument
- 28. Lea el archivo binario en una estructura
- 29. Mantener los permisos de archivo al extraer de un archivo zip utilizando JDK 5 api
- 30. protobuf: lea un mensaje en C++ desde C#
Usaría fopen(), pero tengo que ser capaz de distinguir si el archivo no es legible y si no existe –
El uso de fopen será mejor. Porque el acceso es vulnerable a los ataques TOCTOU. (http://en.wikipedia.org/wiki/TOCTOU). Si eso es una preocupación en su caso en absoluto. –
Llamaría a este código sucio ... – Tobi