C' de fork ve exec Kavramı


fork()

fork fonksiyonu bir process'in bire bir kopyasını oluşturmak için kullanılır. fork işlevi işletim sisteminde thread kavramı olmadan önce işletim sisteminin çalışma zamanından daha fazla kazanmak için kullanılmaktaydı. Fork işlemi ile aynı process'ten birden fazla oluşturularak işlemler daha kısa zamanda yapılması sağlanmaktaydı.


 fork fonksiyonu çağrıldığı zaman child process id'si sıfır ile parent process id'si sıfır dışı değerle yukarıdaki gibi kontrol edilerek istenilen kodların çalıştırılması sağlanır.


 fork fonksiyonun hala kullanıldığı ikinci kısım ise bir proces çalışma anında başka bir process'i daha çalıştırmak isterse bu durumda yapması gereken şey process'in bir kopyasını oluşturmak ve child veya parent process'i çalıştırılmak istenen process haline getirmek.bu işlevin ikinci kısmı içinde exec fonksiyonu kullanılmaktadır.

execl()

execl fonksiyonunun çalışma mantığı fonksiyon çağrıldığı anda fonsiyonun parametre ifadesinde girilen fonksiyon çalışmaya başlayacak ve o process artık çağrılan process olarak yaşamına devam edecek. Kısaca artık execl fonksiyonunun altında olan kodların o process için çalışması mümkün olmayacak.


kısaca fork fonksiyonun process'in bir klonunun oluştururken exec process'i mutasyona uğratıp başka bir process olarak çalışmasını sağlayacaktır.


Yukarıda hem fork hem de exec işlemi gerçekleştirilmiştir. önce fork ie iki tane process oluşturulmuş ardından child process exec ile main process'ine dönüşmüş parent process ise çalışmasına devam etmiştir.