exec tanpa garpu
Setidaknya ada dua alasan mengapa Anda ingin melakukan hal seperti itu:
- Memuat rantai. Gambar proses saat ini diganti dengan sesuatu yang berbeda.
- Mulai ulang program yang sedang berjalan (misalnya, bisa terjadi ketika Anda SIGHUP atau proses server semacam itu, memuat ulang semuanya dan melakukan awal yang benar-benar baru). Dalam beberapa cara, orang dapat berargumen ini adalah pemuatan rantai, hanya secara kebetulan dengan program yang sama.
garpu tanpa exec
Itulah yang dilakukan setiap daemon setiap kali dimulai (dua kali, memang). Ini melakukan beberapa hal, di antaranya shell tidak menggantung (karena proses asli bahwa shell menunggu berakhir) dan daemon tidak lagi dikendalikan oleh terminal, jadi menutup jendela shell tidak membunuh daemon.
Penggunaan umum lainnya adalah forking pekerja anak-anak, yang dipopulerkan oleh server web apache sekitar 25 tahun yang lalu (saat ini ini tidak dianggap canggih karena sangat rentan terhadap masalah kawanan petir, tapi itu pasti memberikan sangat sederhana, server paling kuat mungkin).
Namun penggunaan umum lainnya adalah untuk membuat snapshot yang konsisten. fork
tidak hanya menciptakan proses, tetapi juga menyalin (secara teori, pada kenyataannya itu hanya menandai halaman copy-on-write) ruang alamat. Ini (secara atomis) membuat snapshot dari data program lengkap yang tidak dapat diubah lagi oleh induknya.
Beberapa program memanfaatkannya. Misalnya redis menyimpan data ke disk (dalam kondisi yang konsisten) sementara pada saat yang sama memodifikasi set data secara bersamaan. Ini hanya berfungsi karena fork
membuat snapshot yang konsisten yang tidak melihat modifikasi yang dibuat oleh proses induk.