Saya tampaknya salah paham aturan Bash untuk membuat subkulit. Saya pikir tanda kurung selalu membuat subkulit, yang berjalan sebagai prosesnya sendiri.
Namun, sepertinya tidak demikian. Dalam Cuplikan Kode A (di bawah), sleep
perintah kedua tidak berjalan di shell yang terpisah (sebagaimana ditentukan oleh pstree
terminal lain). Namun, di Cuplikan Kode B, kedua sleep
perintah tidak dijalankan di shell terpisah. Satu-satunya perbedaan antara snippet adalah bahwa snippet kedua memiliki dua perintah di dalam tanda kurung.
Bisakah seseorang tolong jelaskan aturan ketika subkulit dibuat?
SNIPPET KODE A:
sleep 5
(
sleep 5
)
SNIPPET KODE B:
sleep 5
(
x=1
sleep 5
)
fork
dan proses anak dibuat (untuk menjalankan perintah eksternal) dengan memanggilfork + exec
. Tapi para Anda yang pertama menyarankan agarfork + exec
dipanggil juga untuk subkulit. Apa yang salah di sini?