Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <fcntl.h>
- #include <string.h>
- int imprimir(char *cadena){
- FILE *fichero;
- fichero = fopen("Resultado.txt", "a+");
- fwrite(cadena, 1, strlen(cadena), fichero);
- fclose(fichero);
- return 0;
- }
- int main(){
- char mensaje[128];
- int tuberia1_permiso[2];
- int tuberia1_finalizado[2];
- pipe(tuberia1_permiso);
- pipe(tuberia1_finalizado);
- int hilo1 = fork();
- if(hilo1 == 0){
- //hijo1
- printf("\tsoy el hijo %d\n", getpid());
- read(tuberia1_permiso[0], mensaje, 128);
- printf("\thijo %d: imprimo la cadena 'casa'\n", getpid());
- imprimir("casa\n");
- write(tuberia1_finalizado[0], "impreso ok", 3);
- read(tuberia1_permiso[0], mensaje, 128);
- printf("\thijo %d: imprimo la cadena 'río'\n", getpid());
- imprimir("río\n");
- write(tuberia1_finalizado[1], "impreso ok", 3);
- }
- else{
- //padre
- int tuberia2_permiso[2];
- int tuberia2_finalizado[2];
- pipe(tuberia2_permiso);
- pipe(tuberia2_finalizado);
- int hilo2 = fork();
- if(hilo2 == 0){
- //hijo2
- printf("\tsoy el hijo %d\n", getpid());
- read(tuberia2_permiso[0], mensaje, 128);
- printf("\thijo %d: imprimo la cadena 'arbol'\n", getpid());
- imprimir("arbol\n");
- write(tuberia2_finalizado[1], "impreso ok", 3);
- }
- else{
- //padre
- printf("soy el padre %d\n", getpid());
- printf("padre: permiso al hijo %d a acceder a memoria compartida\n", hilo1);
- write(tuberia1_permiso[1], "permiso", 3);
- printf("padre: esperando al hijo %d a que termine\n", hilo1);
- printf("padre: permiso al hijo %d a acceder a memoria compartida\n", hilo2);
- write(tuberia2_permiso[1], "permiso", 3);
- printf("padre: esperando al hijo %d a que termine\n", hilo2);
- read(tuberia2_finalizado[0], mensaje, 3);
- printf("padre: el hijo %d ha terminado\n", hilo2);
- printf("padre: permiso al hijo %d a acceder a memoria compartida\n", hilo1);
- write(tuberia1_permiso[1], "permiso", 3);
- read(tuberia1_finalizado[0], mensaje, 3);
- printf("padre: el hijo %d ha terminado\n", hilo1);
- }
- close(tuberia2_permiso[0]);
- close(tuberia2_permiso[1]);
- close(tuberia2_finalizado[0]);
- close(tuberia2_finalizado[1]);
- }
- close(tuberia1_permiso[0]);
- close(tuberia1_permiso[1]);
- close(tuberia1_finalizado[0]);
- close(tuberia1_finalizado[1]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement