Sortof, pipeline bekerja seperti ini: pertama mengeksekusi perintah pertama dan kemudian perintah kedua dalam kasus Anda.
Artinya, mari kita A|B
menjadi perintah yang diberikan. Maka tidak pasti apakah dimulai A
atau tidak B
. Mereka mungkin mulai pada waktu yang sama persis jika ada beberapa CPU. Sebuah pipa dapat menampung jumlah data yang tidak ditentukan tetapi terbatas.
Jika B mencoba membaca dari pipa, tetapi tidak ada data yang tersedia, B
akan menunggu sampai data tiba. Jika B
sedang membaca dari disk, B
mungkin memiliki masalah yang sama dan perlu menunggu sampai disk selesai dibaca. Analogi yang lebih dekat adalah membaca dari keyboard. Di sana, B
perlu menunggu pengguna mengetik. Tetapi dalam semua kasus ini, B telah memulai operasi "baca" dan harus menunggu sampai selesai. Tetapi jika B
suatu perintah sedemikian rupa sehingga hanya membutuhkan sebagian output A
kemudian setelah titik tertentu B
di mana level input tercapai, A
akan dibunuh oleh SIGPIPE
Jika A
mencoba menulis ke pipa dan pipa penuh, A
harus menunggu beberapa ruang di pipa menjadi bebas. A
bisa memiliki masalah yang sama jika sedang menulis ke terminal. Terminal memiliki kontrol aliran dan dapat memoderasi laju data. Bagaimanapun, untuk A
, ia telah memulai operasi "tulis" dan akan menunggu sampai operasi penulisan selesai.
A
dan B
berperilaku sebagai proses bersama, meskipun tidak semua proses bersama akan berkomunikasi dengan pipa. Tidak ada yang memegang kendali penuh atas yang lain.
-m
argumen.