2 * Leandro Lucarella (77891)
4 * Ejercicio 2.3.1. Implementa productor-consumidor con pipes.
11 #include <sys/errno.h>
12 #include <sys/types.h>
21 #define PIPE "77891_P02e2311"
23 // Prueba que un valor no sea -1, saliendo con error si es asÃ.
24 #define TEST(v) do { if ((v) == -1) { perror("P02e2221"); exit(200); } } while (0)
26 /// Nombres de los procesos
27 enum proc_t { PRODUCTOR, CONSUMIDOR };
32 TEST(write(p, &val, sizeof(int)));
33 cout << "Producido " << (int)val << endl;
39 TEST(read(p, &val, sizeof(int)));
40 cout << "Consumido " << val << endl;
43 int main(int argc, char *argv[])
49 cerr << "Faltan parametros: " << argv[0] << " N [max_iter]\n";
52 proc_t proc = (proc_t) atoi(argv[1]);
54 // Maxima cantidad de iteraciones (puede venir por parametro)
57 max_iter = atoi(argv[2]);
59 int mode = (proc == CONSUMIDOR) ? O_RDONLY : O_WRONLY;
60 int p = open(PIPE, mode);
62 for (int i = 0; i < max_iter; ++i)
64 if (proc == PRODUCTOR)
74 // vim: set et sw=4 sts=4 :