çatalsız exec
Böyle bir şey yapmak istemenizin en az iki nedeni vardır:
- Zincir yükleme. Geçerli işlem görüntüsünün yerini farklı bir şey alır.
- Çalışmakta olan programı yeniden başlatmak (örneğin SIGHUP veya böyle bir sunucu işlemini gerçekleştirdiğinizde, her şeyi yeniden yükleyip tamamen yeni bir başlangıç yaptığınızda olabilir). Bir şekilde, bunun zincir yükleme olduğunu, ancak aynı programla çakıştığını iddia edebiliriz.
exec olmadan çatal
Her daemon her başladığında bunu yapar (aslında iki kez). Bu birkaç şey yapar, aralarında kabuk asılmaz (kabuğun beklediği orijinal işlem sona erdiğinden) ve arka plan programı artık terminal tarafından kontrol edilmez, bu nedenle kabuk penceresinin kapatılması arka plan programını öldürmez.
Başka bir yaygın kullanım, 25 yıl önce apache web sunucusu tarafından ünlü hale getirilen işçi çocuklarını çatallamaktır (günümüzde, gürleyen sürü problemine çok eğilimli olduğu için bu son teknoloji olarak kabul edilmemektedir, ancak darn basit, mümkün olan en sağlam sunucu).
Yine bir başka yaygın kullanım tutarlı bir anlık görüntü oluşturmaktır. fork
sadece bir süreç oluşturmakla kalmaz, aynı zamanda adres alanını kopyalar (teorik olarak gerçekte sadece yazma üzerine kopyaları işaretler). Bu (atomik olarak), üst öğenin artık değiştiremeyeceği tüm program verilerinin anlık görüntüsünü oluşturur.
Bazı programlar bundan yararlanır. Örneğin redis, veriyi aynı anda değiştirirken verileri diske (tutarlı bir durumda) kaydeder . Bu yalnızca fork
üst işlem tarafından yapılan değişiklikleri görmeyen tutarlı bir anlık görüntü oluşturduğu için çalışır .