La operación de archivos es parte de la programación de Linux.

Prefacio

        Las operaciones en archivos deben seguir el orden de apertura del archivo, operación del archivo y cierre del archivo. Cerrar el archivo es lo más importante. Debido a que el archivo en sí es un archivo estático, se creará un archivo dinámico después de abrir el archivo y el contenido del archivo estático se cargará en el búfer buf del archivo dinámico. Todas las operaciones en el archivo se realizan en buf. Si el archivo no está cerrado, el archivo estático no se actualizará sincrónicamente. Después de cerrar el archivo, el archivo estático se actualizará sincrónicamente.

Tabla de contenido

        Este artículo describe algunas funciones comúnmente utilizadas para operar archivos en Linux: función open(), función close(), función write(),

función read(), función de posicionamiento del cursor lseek() y algunos problemas menores.

abierto()

cerca()

escribir()

leer()   

crear()

abierto()

Archivo de encabezado :  

      #include <sys/types.h>
      #include <sys/stat.h>
      #include <fcntl.h>

Prototipo de función :

       int open(const char *pathname, int flags);
       int open(const char *pathname, int flags, mode_t mode);

  Función: Al abrir un archivo se devolverá un descriptor de archivo, un número entero (la descripción del archivo se conoce como fd). El descriptor de archivo ejecuta todas las funciones de operación del archivo. Otras funciones pueden acceder al archivo especificado según fd.

Descripción del parámetro :

               1.nombre de ruta

                        El nombre del archivo que se abrirá (incluida la ruta)

                2.banderas

                        Al abrir un archivo, puede pasar una o dos opciones de parámetros para los permisos de acceso al archivo.

                        O_RDONLY abierto solo lectura

                        O_WRONLY Abierto solo para escritura

                        O_RDWR abierto para lectura y escritura

                  Estos tres parámetros se usan a veces y solo se puede usar uno (es fácil de entender, cuando no puede leer ni escribir, puede hacerlo de solo escritura)

                        O_CREAT Crea el archivo si no existe. Al utilizar esta opción, también debe especificar el modo del tercer parámetro, que describe los permisos de acceso del nuevo archivo.    Si el archivo no existe, créelo.

                        O_EXCL Si se especifica O_CREAT|O_EXCL, el valor de retorno es -1, lo que significa que el archivo existe.

                        O_APPEND Agregar este parámetro puede hacer que todo lo escrito se ajuste y se escriba en la siguiente línea.

                        O_TRUNC Agregue este parámetro para borrar el contenido anterior y reescribir el contenido más reciente.

El uso de la función open() depende del escenario de la aplicación para decidir cuál usar. Si el archivo existe, use el primero. Si no existe, use el segundo. O_CREAT (como O_RDWR|O_CREAT) necesita que se utilizará en la bandera y el modo de registro de la banda Permisos de acceso al archivo creado. Los permisos de acceso a archivos generalmente son de lectura y escritura (0600)

valor de retorno:

Abierto con éxito: devuelve un número entero

Error de apertura: retorno -1

cerca()

Archivo de cabeza:  

       #include <unistd.h>

Prototipo de función:

      int close(int fd);

Función: cerrar un archivo abierto.

Descripción de parámetros:

                fd es el descriptor de archivo devuelto por la función de apertura.

valor de retorno:

Cerrar exitosamente: devolver 0

Cierre fallido: retorno -1

Nota: Los archivos abiertos deben cerrarse; de ​​lo contrario, se ocupará una gran cantidad de recursos y se producirá una memoria insuficiente.

escribir()

Archivo de encabezado :

       #include <unistd.h>

Prototipo de función

       ssize_t write(int fd, const void *buf, size_t count);

Función: escribe contenido en el archivo al que apunta fd. La explicación vernácula es contar los bytes de datos colocados en el búfer y escribirlos en el archivo abierto.

Descripción del parámetro :

                1.intfd

                       Descriptor de archivo, el número devuelto por la función de apertura después de que se abre correctamente.

                2.const nulo *buf

                        Un puntero sin tipo, el búfer se utiliza para almacenar el contenido que desea escribir.

                3.size_t contar

                        La cantidad de bytes para escribir en el archivo y en cuántos bytes escribir los datos del búfer.

                        Puede usar sizeof y strlen para encontrar el tamaño del búfer, sizeof calcula el tamaño del puntero buf y strlen calcula el tamaño de la cadena en todo el buf.

Valor de retorno :

Escritura exitosa: devuelve un número entero, que es el número de bytes escritos

Error de escritura: retorno -1

leer()   

Archivo de encabezado :

         #include <unistd.h>

Prototipo de función :

        ssize_t read(int fd, void *buf, size_t count);

 Función: leer el contenido del archivo al que apunta fd. La explicación vernácula es leer el conteo de bytes de datos del archivo al que apunta fd y almacenarlo en buf.

Nota: Al definir buf, preste atención al problema de los punteros salvajes y abra espacio para buf.

Descripción del parámetro :  

                1.intfd

                       Descriptor de archivo, el número devuelto por la función de apertura después de que se abre correctamente.

                2.const nulo *buf

                        Un puntero sin tipo, el búfer se utiliza para almacenar el contenido que desea leer.

                3.size_t contar

                        Lea la cantidad de bytes del archivo y almacene la cantidad de bytes de datos en el archivo en el búfer.

Valor de retorno :

Lectura exitosa: devuelve el número de bytes leídos (el valor de retorno para archivos en blanco es 0)

Error de lectura: el valor de retorno es -1

Problema con la función de lectura : al leer un archivo, asegúrese de que el cursor del archivo esté en la primera posición; de lo contrario, la lectura quedará en blanco. Explícalo aquí:

Suponiendo que el contenido anterior está escrito en un archivo en blanco, el cursor del archivo llegará a F. Al leer, la lectura comienza desde detrás del cursor, por lo que el contenido leído estará en blanco. Este cursor es similar al que parpadea después de escribir un documento de Word.

Solución:

                1. Reabrir. Después de escribir correctamente, cierre el archivo y luego ábralo para mover el cursor a la primera posición.
                          

                                close(fd);

                          fd = open("./file1",O_RDWR);

                2. Reposicione el cursor. Utilice la función lseek para reposicionar el cursor.

                  lseek(int fd, offset, int de dónde);

                     1.文件: #include <sys/types.h>
                                     #include <unistd.h>

                      2. Descripción del parámetro: fd: descriptor de archivo

                                          desplazamiento: valor de desplazamiento (los números positivos mueven el cursor hacia atrás, los números negativos avanzan) en relación con el desplazamiento de la posición del cursor

                                          int de donde: posición del cursor, que tiene tres tipos:

                                                                  El cursor SEEK_SET apunta a la cabeza,

                                                                  El cursor SEEK_CUR apunta a la posición actual,

                                                                   SEEK_ENDEl cursor apunta al final                                  

lseek(fd,0,SEEK_SET)指到文件头
lseek(fd,0,SEEK_END)指到文件尾
lseek(fd,-17,SEEK_CUR)复数往前移,正数往后移

                      3. La función lseek puede calcular inteligentemente el tamaño del contenido del archivo: el valor de retorno de lseek es el valor de desplazamiento del encabezado.         

 int filesize = lseek(fd,0,SEEK_END);

crear()

Archivo de encabezado :

       #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

Prototipo de función         

      int creat(const char *pathname, mode_t mode);

Descripción de la función: crear un archivo

Descripción del parámetro :

                  1.const char *pathname La ruta de almacenamiento del archivo creado

                  El modo 2.mode_t otorga permisos a los archivos creados. Puedes usar algunos

                      宏表示        数字
					 S_IRUSR         4         可读
					 S_IWUSR         2         可写  
					 S_IXUSR         1         可执行	
					 S_IRWXU         7         可读、写、执行

Valor de retorno :

                Devuelve el descriptor de archivo fd para este archivo.

Supongo que te gusta

Origin blog.csdn.net/qq_44848795/article/details/121844381
Recomendado
Clasificación