Mkfifo

From OnnoWiki
Jump to navigation Jump to search

Apa itu mkfifo?

mkfifo adalah singkatan dari "make first-in-first-out". Ini adalah perintah di shell Linux yang digunakan untuk membuat named pipe atau FIFO (First-In-First-Out). FIFO adalah jenis file khusus yang berfungsi sebagai saluran komunikasi antar proses (inter-process communication/IPC). Data yang ditulis ke satu ujung FIFO akan dibaca dari ujung yang lain dalam urutan yang sama seperti data ditulis.

Mengapa Menggunakan FIFO?

  • Komunikasi antar proses: FIFO menyediakan cara sederhana untuk dua atau lebih proses untuk berkomunikasi secara asynchronous.
  • Sinkronisasi proses: FIFO dapat digunakan untuk mensinkronkan eksekusi beberapa proses.
  • Pengalihan output: Output dari satu perintah dapat dialirkan ke input dari perintah lain melalui FIFO.

Cara Kerja:

Pembuatan FIFO:

Ketika Anda menjalankan perintah mkfifo nama_fifo, sistem operasi akan membuat sebuah file khusus dengan nama nama_fifo. File ini tidak menyimpan data secara permanen seperti file biasa, melainkan berfungsi sebagai saluran komunikasi.

  • Contoh: mkfifo mypipe akan membuat FIFO bernama mypipe.

Proses Penulisan:

Sebuah proses dapat menulis data ke FIFO dengan menggunakan FIFO sebagai file tujuan.

  • Contoh: echo "Hello" > mypipe akan menulis string "Hello" ke FIFO mypipe.

Proses Pembacaan: Proses lain dapat membaca data dari FIFO dengan menggunakan FIFO sebagai sumber data.

  • Contoh: cat mypipe akan membaca dan menampilkan data yang ada di FIFO mypipe ke layar.

Contoh Penggunaan:

# Buat dua terminal
# Terminal 1:
mkfifo mypipe
while true; do
  read line < mypipe
  echo "Received: $line"
done
# Terminal 2:
echo "Hello from terminal 2" > mypipe
echo "Another message" > mypipe

Pada contoh di atas:

  • Terminal 1 akan terus membaca data dari FIFO mypipe dan menampilkannya ke layar.
  • Terminal 2 akan menulis dua pesan ke FIFO mypipe.
  • Pesan-pesan tersebut akan dibaca dan ditampilkan oleh Terminal 1 dalam urutan yang sama seperti ditulis.

Penting:

  • Proses yang mencoba membaca dari FIFO yang kosong akan diblokir sampai ada data yang ditulis ke FIFO.
  • Proses yang mencoba menulis ke FIFO yang sudah penuh juga akan diblokir sampai ada ruang kosong di FIFO.
  • FIFO biasanya digunakan dalam skenario di mana proses perlu berkomunikasi secara asynchronous dan tidak perlu menyimpan data secara permanen.

Kesimpulan:

  • FIFO adalah alat yang sangat berguna untuk membuat komunikasi antar proses di Linux. Dengan memahami cara kerjanya, Anda dapat membangun skrip dan aplikasi yang lebih kompleks dan efisien