• yazılım dünyasında "yol ayrımı" anlamından türetilmiş ve "bir projede, geliştiriciler yol ayrımına geldiklerinde, ayrı düşünenlerin birleşerek farklı bir isimle geliştirmeye devam etmeleri" manasını almıştır.

    mesela mozilla'nın bazı firefox bileşenlerini (logo ve grafikleri) patentlemesinden sonra bazı arkadaşlar çıkmışlar ve iceweasel diye patentli hiçbir bileşeni olmayan bir fork oluşturmuşlardır (galiba sonradan ismi icecat oldu). sebep sadece özgür yazılım felsefesi olmayabilir de. yine firefox'un başka bir forku olan flock'u geliştirenlerin yegane gayesi ise sosyal içerik (bundan kastım ilim irfan değil, blog, mikroblog, video paylaşım, arkadaşlık siteleri falan). bunun dışında bazı geliştiriciler de firefox'u değişik işlemci mimarilerine göre derlemişler ve ortaya swiftweasel çıkmıştır. daha da ilginci - ve eğer yanlış bilmiyorsam- firefox da mozilla'nın eski netscape'inden forktur. çünkü şu anda netscape'in devamı olarak gösterilen yazılım seamonkey'dir.

    evet dostlar... gördüğünüz gibi özgür yazılım dünyasında forkan forkana. bu forkların en güzel yanı da çoğu zaman orijinal projeleri de doğru yöne sevketmeleri. compiz geliştiricileri tutucu davrandıklarında hemen bir forkla beril geliştirildi ve bu da compiz geliştiricilerinin hizaya gelmesini sağladı ve en nihayetinde ortaya compiz fusion çıktı, iyi de oldu. debian kullanım kolaylığı olarak muazzam geliştirilebilir bir sistemdi fakat geliştiricilerinin ve kullanıcılarının öncelikleri farklıydı, ortaya ubuntu çıktı. hatta onlar da bir süredir ayak sürüyorlar ve hoop! linux mint. bu sistemi çok seviyorum.

    viva la fork!
  • bir process fork edildiğinde, oluşan iki process den birine 0 değeri diğerine 0 dan büyük bir değer return edilir. 0 dan büyük değer return edilen process, parent processdir.
  • catalin ingilizcesi.
  • hacker kültüründe, aynı projenin birden fazla kaynak kodu versiyonu olması ve bunların kod temeli * olarak birbiriyle uyumsuz olması durumuna verilen addır. fork durumundaki projenin versiyonlarından birinden aldığınız kodu diğerine entegre edemezsiniz (yani ağır değişiklikler yapmadan entegre edemezsiniz).

    örnekleri: xemacs-gnu emacs, gcc-egcs (sonradan bir birleştirme operasyonuyla kurtarılmıştır) ve freebsd-netbsd-openbsd forklarıdır.

    kaynak: jargon dictionary
  • ilginc olan sudur ki fork cagrisinin ardindan her iki process ayni yerden. yani fork cagrisinin hemen sonrasindan devam eder. sanmayiniz ki child processin program sayaci sifirlanir bastan baslar.
  • her seyi kopyalar demisken, buffer'lari da kopyalar ornegin soyle bi programimiz olsun:

    int main(){ printf("naber panpa"); fork();}

    derleyip calistirdiginizda ekranda 2 adet 'naber panpa' gormeniz olasidir. zira panpa'dan sonra \n koymadiginiz icin veya fflush(stdout); yapmadiginiz icin stdout da aynen forklanmistir ve programlar kapanirken buffer'lar flush edilmistir.
  • bir coinin çatallaşması, ikiye ayrılması anlamına geliyor. örneğin bitcoin’in yavaş işlem süresi ve fazla komisyonu nedeniyle bazı insanlar daha iyi bir halini yapacaklarına inanıyorlar ve bitcoin’i alıp bazı değişiklikler ve yeni bir isimle piyasaya sürüyorlar. böylece bitcoin fork’lanmış oluyor.
  • fork işlevini çağırdığınız anda, tüm kaynakların da birer kopyası alınır. her process kendi kaynaklarına erişebilir. örneğin:

    int a = 5;
    fork();
    cout << ++a << endl;

    bu kod, ekrana iki defa 6 basar. her biri bir process için. hatta:

    int * bptr = new int;
    *bptr = 10;
    fork();
    cout << ++(*bptr) << endl;

    bu da ekrana iki defa 11 basar. yani dinamik olarak ayrılan alanları da kopyalıyor. vallahi bu işe akıl sır ermiyor...
  • mac os x ve windows için arayüzü düzgün, deli gibi ram canavarı olmayan bir git arayüzü.

    https://fork.dev/
  • posix standartında, bir process'in birebir kopyasını oluşturan c fonksiyonu.

    örnek kullanım:

    pid_t pid;

    pid = fork();
    if(pid > 0)
    {
    exit(0); // parent process'i sonlandiriyoruz.
    }
    else if(pid < 0)
    {
    // fork edilemedi, bisi oldu, da$ dustu, ayu cikti..
    printf("fork(): %s\n", sys_errlist[errno]);
    exit(errno);
    }

    ..
    ...
    ..
hesabın var mı? giriş yap