Kalimat itu tidak begitu jelas. Pertama, orang tua harus leluhur , karena proses pemasangan pipa dapat menjadi orangtua, atau kakek nenek, atau kakek nenek ..., kakek nenek, atau salah satu proses komunikasi. Kedua, kalimat itu tidak berarti "jika Anda menginginkan pipa, harus ada proses leluhur yang sama", tetapi "jika Anda menginginkan pipa, proses leluhur yang sama harus mengaturnya".
Di bawah kap mesin, proses membuat pipa dengan sendirinya. Pipa adalah deskriptor file seperti yang lain, atau lebih tepatnya sepasang deskriptor file, satu untuk setiap akhir. Proses yang menciptakan pipa dapat menggunakannya segera untuk mengirim data ke dirinya sendiri, meskipun ini jarang berguna (meskipun pipa-sendiri memang ada gunanya).
Ungkapan tipikal adalah untuk proses mengatur pipa, kemudian bercabang proses anak, dan menutup salah satu ujung pipa di induk dan ujung lain pipa di anak. Ini memungkinkan orang tua dan proses anak berkomunikasi dalam satu arah. Jika proses memerlukan komunikasi dua arah, mereka membutuhkan dua pipa (kecuali pada beberapa varian unix di mana pipa dua arah).
Pipa-pipa tersebut diwarisi secara bergiliran oleh anak-anak, sehingga proses yang menciptakan pipa mungkin tidak terlibat dalam komunikasi. Misalnya, pipa di shell yang dibuat antara dua perintah eksternal seperti ls | rot13
melibatkan langkah-langkah berikut:
- Shell membuat pipa.
- Shell melakukan proses. Anak menutup akhir membaca pipa dan panggilan
execve
pada ls
.
- Shell melakukan proses. Anak menutup tulis ujung pipa dan panggilan
execve
pada rot13
.
- Shell menutup kedua ujung pipa dan menunggu kedua proses untuk keluar.
Jika dua proses yang ada ingin berkomunikasi satu sama lain, mereka dapat menggunakan pipa bernama . (Yah, ada juga file deskriptor yang lewat , tapi itu bukan untuk yang lemah hati.)