En limits.h
, y en varios lugares en las páginas de manual de POSIX, hay referencias a PATH_MAX
y NAME_MAX
. ¿Cómo se relacionan entre sí? ¿Dónde está la documentación oficial para ellos? ¿Cómo puedo obtenerlos en tiempo de ejecución y (cuando sea relevante) tiempo de compilación para los entornos C, Python y GNU (shell)?¿Cuál es la relación entre PATH_MAX y NAME_MAX, y cómo puedo obtenerla?
Respuesta
PATH_MAX
es la longitud máxima de una ruta del sistema de archivos. NAME_MAX
es la longitud máxima de un nombre de archivo (en un lugar determinado). Por lo tanto, /foo/bar
está restringido por PATH_MAX
, y solo la parte bar
tiene su longitud limitada por NAME_MAX
.
puede obtener estos en tiempo de ejecución a través de pathconf
, como _PC_PATH_MAX
y _PC_NAME_MAX
, aunque la práctica estándar es por lo general sólo para utilizar las macros estáticos en tiempo de compilación. Supongo que sería mejor utilizar la opción de tiempo de ejecución porque potencialmente podría admitir valores más largos de esa manera, pero no estoy seguro de qué sistemas (en caso de haberlos) realmente proporcionan un retorno desde pathconf
que es mayor que el valor de POSIX_FOO_MAX
valores.
En la mayoría de los sistemas operativos, PATH_MAX
no se debe definir en absoluto. Se supone que solo debe definirse en absoluto, si el sistema operativo tiene una longitud máxima para una cadena que describe una ruta, que la mayoría de los sistemas operativos no tienen; en esos casos, debería obtener un error si usa PATH_MAX
fuera de una macro.
Debe evitar confiar en la existencia de PATH_MAX
y tratar de ignorarlo en su totalidad.
que PATH_MAX
existe en absoluto, en la mayoría de los sistemas operativos, es en realidad un error. Hasta donde yo sé, solo los sistemas operativos de Windows realmente lo honran.
- 1. ¿Cuál es la diferencia entre la relación Composición y Asociación?
- 2. nginx, ¿cuál es la relación entre worker_connections, keepalive_timeout y $ conexión
- 3. ¿Cuál es la relación entre Selenium RC y WebDriver?
- 4. ¿Cuál es la relación entre ghc-pkg y cabal?
- 5. ¿Cuál es la relación entre Passenger y Capistrano?
- 6. ¿Cuál es la relación entre UIView y CALayer
- 7. Cuál es la relación entre píxeles y píxeles escalados
- 8. ¿Cuál es la relación entre "un" montón y "el" montón?
- 9. ¿Cuál es la relación entre docutils y Sphinx?
- 10. ¿Cuál es la relación entre bitbucket.org y bytebucket.org?
- 11. ¿Cuál es la relación entre el campo 'SYSTEM_PROPERTIES_MODE_ENVIRONMENT' y PropertyPlaceHolderConfigurer?
- 12. ¿Cuál es la relación entre entornos y proyectos en virtualenvwrapper?
- 13. ¿Cuál es la diferencia/relación entre AVR y Arduino?
- 14. ¿Cuál es la relación entre las redes bayesianas y neuronales?
- 15. ¿Cuál es la relación entre __getattr__ y getattr?
- 16. ¿Cuál es la relación entre AppDelegate, RootViewController y UIApplication?
- 17. ¿Cuál es la relación entre WIC y GDI +?
- 18. ¿Cuál es la relación entre masksToBounds y cornerRadius?
- 19. ¿Cuál es la relación entre GTK, GTK + y GTK2?
- 20. ¿Cuál es la relación entre OSGi y Dependency Injection
- 21. ¿Cuál es la relación entre Xtext y ANTLR?
- 22. ¿Cuál es la relación entre GC, Finalize() y Dispose?
- 23. ¿Cuál es la relación entre ContentPane y JPanel?
- 24. ¿Cuál es la relación entre gl_Color y gl_FrontColor en sombreadores de vértices y fragmentos
- 25. Relación entre AppDelegate y main.m
- 26. ¿Cuál es la relación entre la metaclase de clase Base y Derivada en Ruby?
- 27. relación entre log4j y apache.commons.logging
- 28. Cuál es la diferencia entre = y: =
- 29. Relación entre HttpContext.Request.Cookies y HttpContext.Response.Cookies
- 30. Relación entre la clase System.Object y Structs
¿Puede comentar si están disponibles o no en Python, y dónde? –
@Matt Joiner: Su pregunta solo tiene sentido para C; no hay un "tiempo de compilación" para Python o shell scripting. Si está utilizando un lenguaje de scripting, estas variables tampoco son útiles para usted; solo use una cadena de longitud indefinida para manipular sus rutas. Además, estas son variables específicas del sistema, y una secuencia de comandos de Python idealmente debería ser portable, por lo que es posible que no desee utilizarlas y, en su lugar, simplemente verifique los errores de "ruta demasiado larga" al crear/acceder a un archivo. – Borealid
Escribo un sistema de archivos en Python, por lo que son de gran interés. Llamaré a 'os.fpathconf' en mi archivo de dispositivo como una mejor estimación para' PATH_MAX', y 'NAME_MAX' es una propiedad de mi implementación devuelta a través de' struct statvfs'. A pesar de perder los consejos de Python, esta es una buena respuesta. –