Bildiğimiz gibi çalıştırdığımız programların arkaplanda nelerin döndüğünü baktığımızda karşılaştığımız kavramlardan biride processlerdir.Process tam olarak program değildir.Programlar processlerin işlemesiyle çalışır.Processlerde çalıştırılan programın kodları,değişkenleri,işlemcinin bayraklarının durumları gibi işletim sisteminin programla çalıştırılan programla haberleşmesini sağlayan durumlar bulunur.
fork() komutu ise bir process ten başka bir process kopyalamak için üretilmiştir
Öncelikle her processin unique dediğimiz nev-i şahsına münhasır id leri bulunur.Bunu c dilinde şu komutlarla gösterebilir.
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("process id : %d\n",(int)getpid());
}
Gelelim fork() komutuna.fork() komutu process kopyalamaya yarar.Kopyalanan process e child process,kopyalandığı process e parent process denir.Child process,parent process id sinden bir fazlası verilecek şekilde kopyalanır.
Burada dikkat etmemiz gereken husus return nun iki defa gerçekleşmesidir. Parent process e ve child process e aynı anda dönüş yapılır.
#include <stdio.h>
#include <unistd.h>
int main(void)
{
int forkResult;
printf("process id = %i\n",getpid());
forkResult=fork();
printf("process id = %i - result %d\n",getpid(),forkResult);
return 0;
}
Gördüğümüz gibi 2289 parent processimizn id sidir(PPID) 2290 ise child processimizin id sidir.
process id:2289 - result 2290(parent process)
process id:2289 - result 0(child process)