Siempre que liste el contenido de un directorio con una función como readdir, los nombres de archivo devueltos también incluyen "." y "..". Tengo la sospecha de que estos son solo enlaces normales en el sistema de archivos y por lo tanto indistinguibles de los archivos reales, pero siempre tengo que filtrarlos porque no son objetos reales en el directorio que estoy enumerando. ¿Hay alguna buena razón para que funciones como readdir los incluya? ¿Algunos sistemas operativos o sistemas de archivos contienen más o diferentes nombres de archivos virtuales? ¿Hay una mejor manera de filtrarlos que no sea haciendo una comparación de cadenas con "." y ".."?¿Por qué las listas de directorios contienen el directorio actual (.) Y principal (...)?
Actualización: gracias a todos por responder. Supongo que siempre pensé que cosas como ./ y ../ eran meras convenciones que podrían manejarse buscando y reemplazando. Me parece un poco sorprendente, aunque probablemente más eficiente y transparente, hacer que formen parte del propio sistema de archivos.
Sin embargo, queda una pregunta: desde entonces. y ... son nombres arbitrarios para estos enlaces, ¿hay sistemas de archivos que utilicen otros?
En Windows,. parece ser parte de la RUTA implícitamente, lo que significa que simplemente puede escribir run_this. Al estar acostumbrado a esto, siempre he insistido en que el prefijo ./ es un poco molesto cuando uso Linux, aunque entiendo su valor para la seguridad. – Lemming
No había pensado demasiado sobre las restricciones de seguridad hasta que se me explicó a principios de este año. El usuario desagradable podría tener un comando en su directorio llamado ls, que un administrador, al navegar a ese directorio, podría ejecutar, y ese comando podría permitirle al usuario acceso adicional. Malo. –