Linux pipe pipe function method

  

pipe es una tubería en el sistema Linux, el cuerpo principal del mecanismo de tubería es la llamada de la función pipe, entonces, ¿cómo construir una función pipe en el sistema Linux? La siguiente pequeña serie lo introducirá en el método de construcción de una función de tubería en Linux. Echémosle un vistazo.

● tuberías sin nombre

Se utiliza principalmente entre el padre y el hijo, o entre dos procesos de hermanos. En el sistema Linux, se puede establecer un canal de comunicación unidireccional a través de llamadas al sistema, y ​​esta relación solo puede establecerse mediante el proceso principal. Por lo tanto, cada tubería es unidireccional y se deben establecer dos tuberías cuando se requiere una comunicación bidireccional. Los procesos en ambos extremos de la tubería tratan la tubería como un archivo, un proceso es responsable de escribir en la tubería y el otro es la lectura de la tubería. Esta transmisión sigue las reglas de " primero en entrar, primero en salir " (FIFO).

● Canalizaciones con nombre

Las tuberías con nombre están diseñadas para solucionar las deficiencias de las tuberías sin nombre que solo pueden usarse para la comunicación entre parientes cercanos. Una canalización con nombre es un archivo con su propio nombre creado en el medio de disco o sistema de archivos (no solo en la memoria), y cualquier proceso puede contactar al archivo en cualquier momento por nombre de archivo o ruta. Para implementar tuberías con nombre, se introdujo un nuevo tipo de archivo — — archivo FIFO (siguiendo el principio de primero en entrar, primero en salir). Implementar una tubería con nombre es en realidad implementar un archivo FIFO. Una vez que se establece una tubería con nombre, sus operaciones de lectura, escritura y cierre son idénticas a las de una tubería normal. Aunque el nodo inodo del archivo FIFO está en el disco, es solo un nodo. Los datos del archivo todavía existen en la página del búfer de memoria, que es la misma que la tubería normal.

1. Descripción de la función

pipe (Build Pipeline):

1) Header #include "unistd.h"

2) Define la función: Int pipe (int filedes [2]);

3) Descripción de la función: pipe () creará un pipe y devolverá el descriptor de archivo desde la matriz de parámetros filedes.

filedes [0] es el extremo de lectura de la tubería

filedes [1] es el extremo de escritura de la tubería.

4) Valor de retorno: devuelve cero si tiene éxito; de lo contrario, devuelve -1, la causa del error se almacena en errno.

Código de error:

EMFILE El proceso se ha agotado como máximo en los descriptores de archivos

ENFILE El sistema no tiene descriptores de archivos disponibles.

El parámetro EFAULT filedes array address no es válido.
Anterior12Siguiente Total 2 Páginas

Copyright © Conocimiento de Windows All Rights Reserved