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 tuberia_permiso[2];
- pipe(tuberia_permiso);
- int hilo1 = fork();
- if(hilo1 == 0) {
- //hijo
- int tuberia_permiso2[2];
- pipe(tuberia_permiso2);
- int hilo2 = fork();
- if(hilo2 == 0) {
- //nieto
- printf("PID:%d, soy el nieto\n", getpid());
- imprimir("coche\n");
- printf("\t he imprimido coche\n");
- printf("\t enviando permiso al hijo\n");
- write(tuberia_permiso2[1], "permiso", 3);
- }
- else {
- //padre del nieto que a su vez es el hijo del primer padre
- printf("\tsoy el hijo espero permiso del nieto\n");
- read(tuberia_permiso2[0], mensaje, 128);
- printf("PID:%d, soy el hijo\n", getpid());
- imprimir("casa\n");
- printf("\t he imprimido casa\n");
- printf("\t enviando permiso al padre\n");
- write(tuberia_permiso[1], "permiso", 3);
- close(tuberia_permiso2[0]);
- close(tuberia_permiso2[1]);
- }
- }
- else {
- //padre
- printf("\tsoy el padre espero permiso del hijo\n");
- read(tuberia_permiso[0], mensaje, 128);
- printf("PID:%d, soy el padre\n", getpid());
- imprimir("camino\n");
- printf("\t he imprimido camino\n");
- }
- close(tuberia_permiso[0]);
- close(tuberia_permiso[1]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement