Está en la página 1de 7

Comunicación entre procesos en C para

Linux
Laboratorio 7

Ñaupac Pacco, Verónica

Escuela Profesional de Ingenierı́a de Sistemas


Universidad Nacional de San Agustı́n

27 de diciembre de 2010

1. Actividades
Desarrollar en Laboratorio los siguientes ejercicios. Realice la escritura, com-
pilación y ejecución de los siguientes programas

1.1. En cualquier editor digite los programas anteriores,


evalúe los resultados y documente el mismo
Ejemplo de Tuberia 1

1
Ejemplo de Tuberia 2

Ejemplo de Tuberia 3

2
1.2. Elabore un programa propio sobre comunicación en-
tre procesos (padre e hijo)
Se elaboró un programa simple que simula un juego de dados con dos ju-
gadores; el juego consiste en lanzar dos dados, ganando el jugador que sume
mayor puntaje.

3
Teniendo como resultado:

4
2. Cuestionario
2.1. ¿ Por qué debemos colocar la librerı́a < sys/types.h >
?
Porque en ella se encuentran muchos tipos de datos definidos por POSIX,
entre ellos el tipo pidt.

2.2. ¿ Por que debemos colocar la libreria < unistd.h > ?


Porque proporciona acceso a la API de los sistemas operativos POSIX.
Proporciona acceso a funciones de llamadas al sistema como fork(), pipe();
además de a las primitivas de entrada y salida read, write, open, close.

2.3. Investigue ¿Qué función se utiliza para comunicar dos


procesos que no tengan un ancestro común (Creación
de un FIFO)? . Elabore un programa que lo demuestre.
Las tuberı́as con nombre (FIFOs) pueden intercomunicar procesos sin
ningún tipo de relación, es decir, no tienen que estar emparentados co-
mo en los pipes.
Hay varias formas de crear un FIFO. Se puede crear mediante mkfifo o
bien mediante mknod..

mkfifo:

int mkfifo( char *nombre, modet mode);

Los parámetros proporcionados son el nombre del FIFO y los permisos


asociados. La llamada devuelve 0 si se ejecutó con éxito o -1 en caso de
error

5
mknod:

int mknod( char *nombre,modet mode, devt dev);

Los parámetros proporcionados son el nombre del FIFO y el modo de


acceso incluyendo los permisos. La llamada devuelve 0 si se ejecuó con
éxito o -1 en caso de error.

2.4. Definir el comando MKFIFO. ¿Cuándo se utiliza?


Dé un ejemplo.
Crea FIFOs (tambiénn llamados ”tuberı́as con nombre”) con los nombres
de fichero especificados.
Un ”FIFO.es un tipo de fichero especial que permite a procesos indepen-
dientes comunicarse. Un proceso abre el fichero FIFO para escribir, y otro
para leer, tras lo cual los datos pueden fluir como con las tuberı́as sin
nombre usuales en shells o donde sea.
Ejemplo:
El programa crea un fifo de nombre mififo. En cada iteración del bucle lee
una cadena enviada por el proceso escritor.

Codigo:

mififo.c

fifo.c

6
7

También podría gustarte