acabo de leer sobre mode_t que básicamente almacena la siguiente información:¿Por qué mode_t usa 4 bytes?
- 7 valores booleanos para el tipo de archivo (los siguientes: S_IFREG, S_IFDIR, S_IFCHR, S_ISBLK, S_ISFIFO, S_ISLINK, S_ISSOCK)
- 3 * 3 = 9 valores booleanos para los permisos de acceso (leer, escribir y ejecutar para propietario, grupo y otros)
Necesita 16 bit = 2 bytes. Supongo que incluso podría tener un poco menos para el tipo de archivo, ya que tiene que ser un archivo normal, un directorio, un dispositivo de caracteres o de bloque, un socket, un enlace simbólico o un conducto. ¿O existen otros tipos de archivos?
por lo que he acabo de comprobar el tamaño de mode_t con
printf("Size: %d byte\n", sizeof(mode_t));
Se utiliza 4 bytes. ¿Por qué usa 4 bytes? ¿Hay alguna información adicional que no haya notado?
edit: acabo he encontrado que mode_t se define en ptypes.inc:
type mode_t = cuint32;
cuint32 es una de 32 bits de tamaño, entero sin signo y se define en ctypes.inc:
type cuint32 = LongWord;
Quizás esto ayude a la respuesta.
¿Qué sucede si se necesitan agregar más opciones/banderas, etc. en el futuro? – Nim
Podría ser que simplemente se defina de un 'int', que es de 32 bits en la mayoría de las arquitecturas. O se ha hecho más grande para que pueda adaptarse a las futuras banderas. –
Su ** int ** tipo _may_ puede ser de 4 bytes, incluso si almacena en él el número "255" ... El "bloque de construcción" es la arquitectura del procesador y, además, tiene espacio libre para cualquier otra bandera que tengan necesitar. ¡¡¡Odio las banderas de bit !!! –