Función PREAD C

Función PREAD C
En el lenguaje de programación C, el propósito del pread () La función es leer el número especificado de bytes (n) de entrada que están indicados por el descriptor de archivo, en el área de búfer definida de la memoria. El pread () la función hace lo mismo que el leer() Método, pero comienza a leer desde un lugar específico en el archivo en lugar de actualizar todo el archivo con el puntero del archivo. La posición del puntero del archivo no se ve afectada. Sin embargo, el valor de desplazamiento se utiliza para especificar la ubicación inicial del archivo. Debemos examinar cómo funciona esta función para ver esto.

Antes de ir más allá, necesitamos comprender la sintaxis de la función pread y sus archivos de encabezado requeridos para esta ilustración. El unistd El archivo de encabezado se usa para funcionar con la función pread. Entonces, aquí está el código para poner en el archivo de lenguaje de programación C:

#incluir

El pread () la función contiene los mismos tres parámetros iniciales que el leer() función, y el cuarto parámetro se compensa para la posición especificada dentro del archivo. Cualquier intento de ejecutar el pread () La función en un archivo que no puede completar una acción de búsqueda dará como resultado un error. Aquí está la sintaxis de la función PREAD:

ssize_t pread (int file_descriptor, void *buffer, size_t no_of_n_bytes, off_t offset);

Esta función devuelve un entero no negativo, lo que indica que leyó con éxito el número especificado de bytes devueltos por esta función. Si devuelve un valor negativo, no lee el número especificado de bytes. Establece el errar a Ebadf (lo que significa que el descriptor de archivo no es un descriptor de archivo o socket válido), Econnreset (un par forzó la terminación de una conexión), Enfermo, Enobufs (recursos insuficientes del sistema para terminar la llamada), etc.

Para obtener los detalles de errar, Investigue un poco en línea. La función de lectura no requiere la autorización para leer un archivo del sistema de archivos o la red.

Ejemplo 1

El ejemplo a continuación abre un archivo y lee datos. Para comenzar este tutorial, inicie una terminal en Linux, Unix o cualquier otro sistema operativo que desee. Luego, como se muestra a continuación, muévase del directorio actual a otro directorio de trabajo apropiado, o una carpeta de "funciona" en nuestro caso. Use el comando "LS" para mostrar casi todos los archivos y directorios en el directorio de trabajo. En el editor VIM, abra o cree un nuevo archivo titulado "Pread.C ”, un archivo de lenguaje de programación C C.

Estamos usando el editor VIM para abrirlo y crearlo. Sin embargo, puede usar el editor que desee, como nano, texto, etc. Puedes ver que tenemos un nuevo.TXT Archivo en esta lista de directorios. Este archivo se utilizará en nuestro código C ahora. Mire la siguiente pantalla del terminal para visualizar la salida:

Los archivos de encabezado están incluidos en las primeras tres líneas. Después de eso, el método principal comienza con su primera línea que declara dos variables enteras, yo.mi., numer y Filedescriptor. Después de eso, establecemos el desplazamiento en 5. Definimos una matriz de caracteres "búfer" y establecemos el valor en "prueba de texto" en la tercera línea de la función principal. Proporcionamos el acceso de solo lectura del usuario al nuevo.TXT archivar en la expresión condicional con la ayuda de un abierto() función.

La función abierta está aquí para devolver un valor de descriptor que se registra en la variable Filedescriptor. Si el descriptor obtiene el valor de menos de 0, el Perror () la función se ejecutará para lanzar un error. En la declaración delse, utilizamos la función PREAD para transmitir los valores de las variables y el tamaño de la función para disminuir el tamaño del búfer si el descriptor obtiene el valor mayor que 0. La declaración de impresión mostró la salida.

El siguiente es el contenido del nuevo.archivo txt. El texto del búfer está en la tercera línea, que es el punto de lectura compensado. Mire la siguiente pantalla del terminal para visualizar la salida:

Ahora, use el compilador C para compilar el preadático.C archivo. Usamos el compilador GCC para la compilación y ejecución del código C. En el terminal, escriba "GCC" e ingrese el nombre del archivo C necesario, seguido de la -O Switch y el nombre del archivo de salida que se ve en la siguiente captura de pantalla. El compilador mostrará cualquier error durante la compilación en la ventana del terminal. Se crea el archivo de salida requerido si la compilación es exitosa y se puede encontrar en el directorio de trabajo.

La salida puede fluctuar según el valor de desplazamiento. Del mismo modo, si se altera el valor del búfer, la salida en la pantalla terminal indudablemente cambiará. Ahora, escriba el siguiente comando en el símbolo del sistema para ejecutar el archivo de salida. Mire la siguiente pantalla del terminal para visualizar la salida:

Ahora, usando el editor VIM, queremos actualizar el preadático Archivo y necesita establecer el valor para Offset en 8, y para la actualización del amortiguador, la cadena a "animales" en lugar de "prueba de texto" como el código que se muestra en la siguiente imagen:

Debido a que hicimos cambios en nuestro archivo de código de programa, ahora necesitamos recompilar nuestro código. El proceso de compilación es el mismo que el realizado en los pasos anteriores. Aquí está la imagen de la nueva pantalla de compilación:

Ahora, debemos imprimir la salida en la pantalla usando el producción o archivo de objeto obtuvimos después de completar el procedimiento de compilación. Consulte la salida en la pantalla Terminal escribiendo el siguiente comando. La salida de esto es "animal". Mire la siguiente pantalla de terminal adjunta para visualizar la salida:

Conclusión

Este artículo mostró el uso de la función PREAD de C para leer los datos de algunos archivos de texto de nuestro sistema Linux en bytes. Hemos discutido cómo un pread () la función es diferente de la simple leer() función debido a usar un punto específico para leer los datos de un archivo.