Asumsikan saya memiliki pipa berikut:
a | b | c | d
Bagaimana saya bisa menunggu selesainya c(atau b) di shatau bash? Ini berarti bahwa skrip ddapat mulai kapan saja (dan tidak perlu ditunggu-tunggu) tetapi membutuhkan hasil lengkap cuntuk bekerja dengan benar.
Case use adalah difftooluntuk gityang membandingkan gambar. Ini dipanggil oleh gitdan perlu memproses inputnya ( a | b | cbagian) dan menampilkan hasil perbandingan ( dbagian). Penelepon akan menghapus input yang diperlukan untuk adan b. Ini berarti bahwa sebelum kembali dari skrip, proses c(atau b) harus diakhiri. Di sisi lain, saya tidak bisa menunggu dkarena ini berarti saya sedang menunggu input pengguna.
Saya tahu saya bisa menulis hasil cke file sementara, atau mungkin menggunakan FIFO di bash. (Namun, tidak yakin apakah FIFO akan membantu.) Apakah mungkin untuk mencapai ini tanpa file sementara sh?
EDIT
Mungkin akan cukup jika saya bisa mengetahui ID proses dari c(atau b) proses dengan cara yang dapat diandalkan. Kemudian seluruh pipa dapat dimulai secara tidak sinkron, dan saya bisa menunggu proses ID. Sesuatu di sepanjang garis
wait $(a | b | { c & [print PID of c] ; } | d)
EDIT ^ 2
Saya telah menemukan solusi, komentar (atau solusi yang masih lebih baik) dipersilakan.
dgratis untuk memulai kapan saja suka, tetapi charus selesai sebelum saya bisa melanjutkan.
dbisa dimulai ketika suka, apa yang sebenarnya Anda tunggu?
dtidak menggunakan output cmaka sepertinya tidak masuk akal untuk membuat dbagian dari pipa. Tetapi jika dmemang menggunakan input maka dharus bekerja sebentar pada inputnya setelah membaca semua itu agar pendekatan Anda membuat perbedaan.
dmulai memprosescoutput hanya setelahcselesai? Anda tidak ingindmulai memproses setiap jalur keluaran saat datang?