Mkfifo: cara kerja

From OnnoWiki
Jump to navigation Jump to search

mkfifo adalah singkatan dari make first-in-first-out. Ini adalah perintah di sistem operasi berbasis Unix seperti Ubuntu yang digunakan untuk membuat sebuah *named pipe* atau pipa bernama. Pipanya sendiri adalah sebuah mekanisme komunikasi antar proses (inter-process communication) yang memungkinkan satu proses menulis data ke dalam pipa dan proses lainnya membaca data tersebut.

Perbedaan `mkfifo` dengan pipa biasa:

  • Pipa biasa: Dibuat secara dinamis saat dua proses berkomunikasi dan hilang ketika komunikasi selesai.
  • Named pipe: Dibuat secara permanen dalam sistem file, sehingga proses yang berbeda dapat mengaksesnya kapan saja selama pipa tersebut ada.

Mengapa Menggunakan `mkfifo`?=

  • Komunikasi antar proses: Ideal untuk menghubungkan dua atau lebih program yang berjalan secara independen.
  • Sinkronisasi: Dapat digunakan untuk mensinkronkan aktivitas antara proses.
  • Pemrosesan data secara bertahap: Data dapat ditulis dan dibaca secara bertahap, sehingga memungkinkan pemrosesan data yang lebih efisien.

Cara Menggunakan `mkfifo`

Membuat named pipe:

mkfifo nama_pipa

Contoh:

mkfifo mypipe

Perintah di atas akan membuat sebuah named pipe dengan nama `mypipe` di direktori saat ini.

Mengakses named pipe:

  • Membaca dari named pipe:
cat < nama_pipa
  • Menulis ke named pipe:
echo "Hello" > nama_pipa

Contoh penggunaan:

Misalkan kita memiliki dua skrip:

  • Skrip 1 (penulis):
 #!/bin/bash
 while true; do
     echo "Data dari skrip 1" > mypipe
     sleep 1
 done
  • Skrip 2 (pembaca):
 #!/bin/bash
 while true; do
     read line < mypipe
     echo "Data yang diterima: $line"
 done


Skrip 1 akan terus menulis data ke `mypipe` setiap detik, sedangkan skrip 2 akan terus membaca data dari `mypipe` dan menampilkannya ke layar.

Opsi Tambahan `mkfifo`

  • `-m mode`: Mengatur izin akses (permission) pada named pipe.
  • `-Z context`: Mengatur konteks keamanan SELinux pada named pipe.

Contoh Penggunaan dalam Skenario Nyata

  • Transfer data antara dua program: Misalnya, mengalihkan output dari satu program ke input program lainnya.
  • Implementasi antrian sederhana: Data yang ditulis ke named pipe akan diproses secara berurutan oleh proses pembaca.
  • Komunikasi antara proses induk dan anak: Proses anak dapat membaca perintah dari proses induk melalui named pipe.

Kesimpulan

mkfifo adalah alat yang sangat berguna untuk membangun sistem yang lebih kompleks dan efisien di Ubuntu Server. Dengan memahami cara kerjanya, Anda dapat memanfaatkannya untuk berbagai keperluan, mulai dari komunikasi antar proses hingga implementasi mekanisme sinkronisasi.


Pranala Menarik