Minggu, 26 Oktober 2014

Named Pipe

Named pipe bisa disebut  juga dengan FIFO, merupakan salah satu metode Interprocess Communication (IPC). IPC adalah komunikasi antar proses, yaitu dua proses atau lebih yang dapat berinteraksi satu sama lain.

Named pipe digunakan untuk 2 proses yang berjalan sendiri-sendiri dan hanya bisa digunakan pada proses-proses yang menggunakan filesystem yang sama. Secara umum, named pipe yaitu metode yang menggunakan file bertipe pipe file yang diciptakan terlebih dahulu oleh salah satu proses dengan menggunakan mkfifo, kemudian proses yang lain membacanya.


Langkah-langkah membuat named pipe:

Proses yang menulis:

1. Deklarasi variabel pointer bertipe char yang berisi lokasi dimana file pipe akan dibuat

                    char *fifo = "/tmp/fifo/";

2. Deklarasi variabel bertipe integer untuk membuka file pipe nya, sekaligus deklarasi variabel array untuk ditulis ke dalam file pipe nya, variabel array ini bisa bertipe apa saja

                    int ff, arr[100];

3. Buat file pipe nya menggunakan mkfifo

                    mkfifo(fifo,0666);

    0666 di atas maksudnya adalah bisa di read dan write, karena biner dari angka 6 adalah 110.

4. Buka file pipe nya menggunakan variabel bertipe integer yang sudah dideklarasi tadi

                    ff = open(fifo, O_WRONLY);

     O_WRONLY di atas maksudnya adalah file nya dibuka dengan mode write only.

5. Tulis variabel array ke dalam pipe nya.

                    write(ff, arr, sizeof(arr));

6. Tutup file pipe nya

                    close(ff);

7. Hapus file pipe nya

                    unlink(fifo);


Proses yang membaca:

1. Deklarasi variabel pointer bertipe char yang berisi lokasi dimana file pipe telah dibuat

                    char *fifo = "/tmp/fifo/";

2. Deklarasi variabel bertipe integer untuk membuka file pipe nya, sekaligus deklarasi variabel array yang diunakan untuk membaca file pipe nya, tipe variabel array ini harus sama dengan tipe variabel yang ditulis ke dalam file pipe nya.

                    int ff, arr[100];

3. Buka file pipe nya menggunakan variabel bertipe integer yang sudah dideklarasi tadi

                    ff = open(fifo, O_RDONLY);

     O_RDONLY di atas maksudnya adalah file nya dibuka dengan mode read only.

4. Baca isi file pipe nya menggunakan variabel array tadi

                    read(ff, arr, 100);

5. Tutup file pipe nya.

                    close(ff);


Kode program utuhnya adalah sebagai berikut:

Proses yang menulis:

char *fifo = "/tmp/fifo/";
int ff, arr[100];
mkfifo(fifo,0666);
ff = open(fifo, O_WRONLY);
write(ff, arr, sizeof(arr));
close(ff);
unlink(fifo);

Proses yang membaca:

char *fifo = "/tmp/fifo/";
int ff, arr[100];
ff = open(fifo, O_RDONLY);
read(ff, arr, 100);
close(ff);

1 komentar: