Semua orang tahu cara membuat pipa searah antara dua program (bind stdout
yang pertama dan stdin
dari yang kedua):first | second
.
Tapi bagaimana cara membuat pipa dua arah, yaitu cross-bind stdin
dan stdout
dari dua program? Apakah ada cara mudah untuk melakukannya di shell?
Jawaban yang Diterima:
Jika pipa pada sistem Anda adalah dua arah (seperti yang ada di Solaris 11 dan setidaknya beberapa BSD, tetapi bukan Linux):
cmd1 <&1 | cmd2 >&0
Waspadalah terhadap kebuntuan.
Perhatikan juga bahwa beberapa versi ksh93 pada beberapa sistem mengimplementasikan pipa (|
) menggunakan pasangan soket . pasangan soket adalah dua arah, tetapi ksh93 secara eksplisit menutup arah sebaliknya, sehingga perintah di atas tidak akan bekerja dengan ksh93 tersebut bahkan pada sistem di mana pipa (seperti yang dibuat oleh pipe(2)
panggilan sistem) adalah dua arah.