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);
:3 mastaaahhh
BalasHapus