Cómo identificar las funciones de apertura y apertura en Linux

  

open y fopen son las funciones de llamada del sistema Linux, porque son más similares, muchas personas las confundirán, las siguientes series pequeñas para introducir la diferencia entre abrir y fopen, no Un amigo que entiende puede llegar a comprender. Características

1. sistema de archivos búfer

es el buffer del sistema de archivos: &" abrir una memoria; amortiguar y ", para cada archivo que se utiliza en un programa, cuando una lectura Cuando se opera el archivo, los datos se leen del archivo de disco a la memoria intermedia "buffer", y luego la variable recibida se lee de la memoria intermedia "buffer"; Cuando realice la operación de escribir un archivo, primero escriba los datos en el "búfer" de la memoria, espere hasta que la memoria se "llene" y luego escriba el archivo. Se puede observar que el tamaño del "búfer" de memoria afecta al número de operaciones reales de la memoria externa. Cuanto más grande es el "búfer" de memoria, menos se realiza la operación, más rápida es la velocidad de ejecución y mayor es la eficiencia. Alta En general, el tamaño del archivo "buffer" está determinado por el aleatorizador.

fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind, etc.

2. Sistema de archivos no bloqueado

Archivos almacenados en búfer El sistema gestiona los archivos mediante punteros de estructura de archivos y accede a ellos mediante punteros de archivos. Puede leer y escribir caracteres, cadenas, datos con formato y leer y escribir datos binarios. El sistema de archivos no almacenados se basa en el sistema operativo para leer y escribir archivos a través de las funciones del sistema operativo. Es una entrada y salida a nivel de sistema. No tiene un puntero de estructura de archivos y solo puede leer y escribir archivos binarios, pero es eficiente y rápido. El estándar ANSI ya no incluye sistemas de archivos sin almacenamiento, por lo que se recomienda que no lo elija. Este libro es sólo para una breve introducción. Abrir, cerrar, leer, escribir, getc, getchar, putc, putchar, etc.

abrir es una llamada del sistema. Se devuelve el identificador del archivo. El identificador del archivo es el índice del archivo en la subtabla de descripción del archivo. fopen es la función de biblioteca C y devuelve un puntero a la estructura del archivo.

fopen es una función de biblioteca de lenguaje C en el estándar ANSIC. Se deben llamar diferentes apis del núcleo en diferentes sistemas.

Las funciones del sistema en Linux están abiertas, y fopen es su función de envoltura. . Sólo para referencia.

Los descriptores de archivos son un concepto bajo Linux. Todos los dispositivos bajo Linux funcionan como archivos. Como sockets de red, dispositivos de hardware, etc. Por supuesto, incluyendo el archivo de operación.

fopen es una función c estándar. Devuelva la secuencia del archivo en lugar del identificador de archivo en linux.

Los archivos de dispositivo no se pueden usar como archivos de transmisión, solo abrir

fopen se utiliza para manipular archivos normales, y tiene un búfer, hay algunas diferencias con abrir

Generalmente, abra el archivo ordinario con fopen, abra el archivo del dispositivo con abrir

fopen es el estándar c, y abierto es la llamada al sistema Linux.

Sus niveles son diferentes.

fopen portable, open no puede

3. Performance

Creo que la principal diferencia entre fopen y open es que fopen tiene un caché en el modo de usuario, en la lectura Y el tiempo de escritura reduce el cambio entre el modo de usuario y el modo de kernel, mientras que abierto necesita cambiar entre el modo de kernel y el modo de usuario cada vez;

se comporta como:

(1) si el orden Al acceder a los archivos, la función de la serie fopen es más rápida que llamar directamente a la serie abierta;

(2) Si el archivo de acceso aleatorio está abierto más rápido que fopen.

Respuesta clásica:

El primero es un IO de bajo nivel, el segundo es un IO avanzado.

El primero devuelve un descriptor de archivo (en el área del programa de usuario), que devuelve un puntero de archivo.

El primero no tiene búfer y el último está en búfer.

El primero trabaja con lectura, escritura, etc., y el segundo trabaja con fread, fwrite, etc.

El último se basa en el primero, y en la mayoría de los casos, el segundo.

Lo anterior es la diferencia entre abrir y abrir, la diferencia entre los dos es principalmente la diferencia entre los buffers, fopen tiene buffer y open no, y su nivel también es diferente, fopen puede ser trasplantado y abierto no.

Copyright © Conocimiento de Windows All Rights Reserved