Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/wait.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <string.h>
- #define MAX_BUF 1024
- int main(void) {
- int pipefd[2]; // tablica która będzie przechowywać deskryptory plików
- pid_t cpid; // zmienna dla PID procesu
- char buf[MAX_BUF]; // tablica typu char dla bufora do odczytywania pliku
- char znak; // zmienna dla znaku
- /* utworzenie potoku bez nazwy i od razu sprawdzenie czy nie wystąpił błąd
- zapisanie w tablicy pipefd deskryptorow do czytania i do pisania */
- if(pipe(pipefd) == -1) {
- exit(-1);
- }
- // utworzenie procesu potomnego i zapisanie wartosci wynikowej do zmiennej cpid
- cpid = fork();
- // sprawdzenie wartosci zmiennej cpid - czy jesteśmy w procesie macierzystym czy potomny
- if (cpid == 0) {
- // jestesmy w procesie potomnym
- // zamknięcie pliku do pisania
- close(pipefd[1]);
- // czytanie pliku ktory jest do odczytu i zapisanie danych do bufora
- read(pipefd[0], buf, MAX_BUF);
- // wyswietlenie wiadomości ze zmiennej buf - bufora
- printf("Odebrałem wiadomość: %s\n", buf);
- // zamknięcie pliku do odczytu
- close(pipefd[0]);
- // zakończenie procesu potomnego
- exit(0);
- } else {
- // jestesmy w procesie macierzystym
- // zamknięcie pliku do odczytu
- close(pipefd[0]);
- // zapisanie wiadomości do pliku do pisania
- write(pipefd[1], "Luke, to ja jestem twoim ojcem!", strlen("Luke, to ja jestem twoim ojcem!"));
- // zamknięcie pliku do pisania
- close(pipefd[1]);
- // czekanie na zakończenie procesu potomnego
- wait(NULL);
- // zakończenie procesu macierzystego
- exit(0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement