TABLA 1. Obtenga los atributos del archivo (stat, fstat, lstat)
2. Tipo de archivo 2.1 Los tipos de archivo incluyen las siguientes macros de prueba de tipo de archivo 2.2 2.3 Ejemplos de prueba de tipo de archivo 3. Permisos de archivo 3.2 Pequeños detalles acerca de los permisos 3.3 Configuración de ID de usuario y configuración de ID de grupo 3.4 Permisos de archivo para llamadas al sistema 3.4.1 funciones umask 3.4.2 chmod y fchmod 3.4.3 chown fchown y lchown 4. Tiempo de archivo 4.1 función utime
El archivo tiene sus atributos, como el tipo, los permisos, la longitud, el estado, etc. Este artículo resumirá esto y conocerá las llamadas al sistema relacionadas.
1. Obtenga los atributos del archivo (stat, fstat, lstat)
Tres funciones stat pueden devolver información sobre los archivos.
[código] #include
int stat (const char * nombre de ruta, struct stat * buf); int fstat (int filedes, struct stat * buf); int lstat (const Char * nombre de ruta, estructura stat * buf); valor de retorno: éxito 0 falla -1 [/código]
La diferencia entre las tres funciones es que el primer parámetro es el nombre del archivo, el primer archivo de parámetros fstat Descriptor, lstat El primer parámetro es el nombre del archivo y devuelve la información del enlace simbólico, no la información del archivo de referencia del enlace simbólico.
El segundo parámetro, el puntero de estructura buf, es una estructura que debemos proporcionar. La forma básica: stat struct {st_mode mode_t; /* tipo de archivo y permisos de archivo * /st_ino ino_t; /* inode * /dev_t st_dev asociado con el archivo; /* guardar dispositivo archivo * /nlink_t st_nlink; /* la el número de enlaces duros en el fichero * /uid_t ST_UID; /* propietario del archivo UID * /gid_t st_gid; /* propietario del archivo GID * /off_t st_size; /* número de bytes del archivo, el archivo es válido ordinaria * /time_t st_atime; /* vez que el archivo se accede por primera vez * /time_t st_mtime; contenido /* el archivo de la última modificación de tiempo * /time_t st_ctime; permisos de archivos * /, el propietario, el grupo o el contenido fue modificada por última vez * /} use stat La función más probable es el comando `ls -l` para obtener toda la información sobre un archivo. A continuación, seguiremos el contenido de stat para comprender la información del atributo del archivo.
2. La estadística de estructura de tipo de archivo tiene información de tipo de archivo en st_mode (st_mode contiene tanto el tipo de archivo como los permisos de archivo).
2.1 Los tipos de archivos incluyen lo siguiente 1. Archivo normal /archivo normal: el tipo de archivo más largo. Los datos pueden ser de texto o binarios, sin diferencias para el kernel de Unix.
2. Archivo de directorio /archivo de directorio. Este archivo contiene los nombres de otros archivos y punteros a la información sobre estos archivos.
3. bloquee un archivo especial. Este tipo de archivo proporciona acceso en búfer al dispositivo. Cada acceso se realiza en unidades de longitud fija.
4. Archivo especial de caracteres Este tipo de archivo proporciona acceso ilimitado al dispositivo. La duración de cada visita es variable.
5. FIFO Este tipo de archivo se utiliza para la comunicación entre procesos y también se convierte en una canalización con nombre.
6. Socket /socket Este tipo de archivo se utiliza para la comunicación de red entre procesos.
7. Enlace simbólico /enlace simbólico Este tipo de archivo apunta a otro archivo.
2.2 Macros para pruebas de tipo de archivo Para un archivo, se pueden usar las siguientes macros para determinar el tipo de archivo. Los parámetros para estas macros son los miembros st_mode de stat.
S_ISREG () para comprobar si un S_ISDIR archivo normal () para comprobar si el archivo es un S_ISBLK directorio () para probar si un bloque S_ISCHR archivo especial () para probar si un personaje es un S_ISFIFO archivo especial () para comprobar si la tubería S_ISSOCK test () una toma de sub S_ISLNK () es una prueba de si el archivo de enlace
2.3 prueba de tipos de archivo de ejemplo [code] nombre del archivo: file_type.c #include #include #include #include
int main (int argc , char * argv [])
{int ret; int i; struct stat stat_buf; char * p_file_type;
for (i = 1; i < argc; i ++) {if ( (ret = lstat (argv [i], &stat_buf)) == -1) {fprintf (stderr, "% s — — >! lstat error \\ n ", argv [i]); continuar; } if (S_ISREG (stat_buf.st_mode))
p_file_type = " normal "; else if (S_ISDIR (stat_buf.st_mode))
p_file_type = " dir "; else if (S_ISCHR (stat_buf.st_mode))
p_file_type = " " carácter especial;; else if (S_ISBLK (stat_buf.st_mode))
p _file_type = " bloque especial "; else if (S_ISLNK (stat_buf.st_mode))
p_file_type = " enlace simbólico "; else if (S_ISFIFO (stat_buf.st_mode))
p_file_type = " fifo "; else if (S_ISSOCK (stat_buf.st_mode))
p_file_type = " socket "; otro p_file_type = " desconocido "; printf ("% s — — >% s \\ n ", argv [i], p_file_type);}
return 0;}
[/code] prueba [code] [prueba @ test stat_code] $ ./file_type /dev /initctl /etc /passwd /dev /sda /dev /tty /dev /log /dev /cdrom /dev /initctl — — > fifo /etc /passwd — — > Regular /dev /sda — — > bloque especial /dev /tty y mdash; — > carácter especial /dev /log — — > socket /dev /cdrom y mdash; — > enlace simbólico [prueba @ test stat_code] $ [/code ]
El ruido en las líneas de cable en los equipos electrónicos tiene dos tipos de ruido radiado y el ru
la configuración de la máquina virtual que se encuentran, presione el conjunto de mapas (Nota figur
Descripción del problema Solución Analice el motivo, tal vez porque la migració
En Linux, el dispositivo IDE lleva el nombre de hd. Generalmente, hay dos interfac
Cómo construir un servidor vpn l2tpd con centOS5.5
Configuración de host virtual de Apache + SSL bajo Linux
El comando de monitoreo en tiempo real de la CPU de Linux mpstat presenta
Tutorial básico de instalación y configuración del paquete rpm del servicio LAMP de Linux
8 consejos para hacerte un super usuario final de Linux
Sistema operativo Linux para modificar la memoria compartida del método simple
No se pudo encontrar Libsasl2.so.2, no se pudo iniciar Apache
Primitiva suplementaria de Linux, interrupción, interrupción suave
Modo común Ruido Modo diferencial Diferenciación y generación de ruido
Cómo utilizar el paquete de archivos comprimidos Rar del sistema operativo Linux
Los dos factores principales del espacio ocupado por el sistema Windows 7
Cómo instalar el sistema de Windows7 U disco Win7 más detallado video tutorial
El sistema operativo Microsoft Windows se ha vuelto inteligente
Mi computadora por qué QQ no mostrará ninguna respuesta
El proceso de Svchost.exe toma la red para descargar, cómo hacerlo
¿Qué debo hacer si aparece la pantalla azul de pantalla azul en el sistema win7?
¿Cómo borrar mensajes en WeChat? Método WeChat para eliminar varios mensajes juntos