Mkfifo
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