La sintaxis del tubo() la función es:
En ttubo(En tpipefd[2]);
Aquí, la función pipe () crea un canal de datos unidireccional para la comunicación entre procesos. Pasas en un En t (Entero) matriz de tipo pipefd que consta de 2 elementos de matriz para la función pipe (). Luego, la función pipe () crea dos descriptores de archivo en el pipefd formación.
El primer elemento del pipefd formación, pipefd [0] se utiliza para leer datos de la tubería.
El segundo elemento de la pipefd formación, pipefd [1] se utiliza para escribir datos en la tubería.
Si tiene éxito, la función pipe () devuelve 0. Si se produce un error durante la inicialización de la tubería, la función pipe () devuelve -1.
La función pipe () se define en el encabezado unistd.h . Para usar la función pipe () en su programa C, debe incluir el encabezado unistd.h como sigue:
#incluir
Para obtener más información sobre la función del sistema pipe (), consulte la página de manual de pipe () con el siguiente comando:
$ hombre2tuboLa página de manual de pipe().
Ejemplo 1:
Para el primer ejemplo, cree un nuevo archivo fuente en C 1_pipe.c y escriba las siguientes líneas de códigos.
#incluir#incluir
#incluir
En tprincipal(vacío) {
En tpipefds[2];
si(tubo(pipefds) == -1) {
perror ('tubo');
Salida (EXIT_FAILURE);
}
printf ('Leer valor de descriptor de archivo:% d orte',pipefds[0]);
printf ('Escribir valor de descriptor de archivo:% d orte',pipefds[1]);
regresoEXIT_SUCCESS;
}
Aquí, incluí el archivo de encabezado de pipe () unistd.h primero con la siguiente línea.
#incluirEntonces, en el principal() función, definí la pipefds matriz de enteros de dos elementos con la siguiente línea.
En tpipefds[2];Luego, ejecuté la función pipe () para inicializar la matriz de descriptores de archivo pipefds como sigue.
tubo(pipefds)También verifiqué errores usando el valor de retorno de la función pipe (). Usé el Salida() función a la terminal del programa en caso de que falle la función de tubería.
si(tubo(pipefds) == -1) {perror ('tubo');
Salida (EXIT_FAILURE);
}
Luego, imprimí el valor de los descriptores de archivos de tubería de lectura y escritura pipefds [0] y pipefds [1] respectivamente.
printf ('Leer valor de descriptor de archivo:% d orte',pipefds[0]);printf ('Escribir valor de descriptor de archivo:% d orte',pipefds[1]);
Si ejecuta el programa, debería ver el siguiente resultado. Como puede ver, el valor del descriptor del archivo de canalización de lectura pipefds [0] es 3 y escribir descriptor de archivo de tubería pipefds [1] es 4 .
Ejemplo 2:
Crea otro archivo fuente en C 2_pipe.c y escriba las siguientes líneas de códigos.
#incluir#incluir
#incluir
#incluir
En tprincipal(vacío) {
En tpipefds[2];
carbonizarsebuffer[5];
si(tubo(pipefds) == -1) {
perror ('tubo');
Salida (EXIT_FAILURE);
}
carbonizarse *alfiler= '4128