Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/stat.h>
- #define FIFO "sync"
- #define RESULT "result.txt"
- #define READ 0
- #define WRITE 1
- int silnia(int x)
- {
- if (x <= 1)
- return 1;
- return x * silnia(x - 1);
- }
- int main()
- {
- printf("Dopisywac do pliku? y/n: ");
- int c = getchar();
- int pipedes[2];
- pipe(pipedes);
- umask(0);
- mkfifo(FIFO, 0666);
- if (!fork())
- {
- close(pipedes[WRITE]);
- while (1)
- {
- int x;
- read(pipedes[READ], &x, sizeof(x));
- int result = silnia(x);
- FILE *f = fopen(FIFO, "w");
- fprintf(f, "%d", result);
- fclose(f);
- }
- }
- if (!fork())
- {
- while (1)
- {
- int x;
- FILE *fifo = fopen(FIFO, "r");
- fscanf(fifo, "%d", &x);
- fclose(fifo);
- printf("Wynik: %d\n", x);
- if (c == 'y') {
- FILE *f = fopen(RESULT, "a");
- fprintf(f, "%d\n", x);
- fclose(f);
- }
- }
- }
- close(pipedes[READ]);
- while (1)
- {
- int x;
- scanf("%d", &x);
- write(pipedes[WRITE], &x, sizeof(x));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement