[linux-programlama] Re: fork() hakkinda

---------

From: Enver ALTIN (enver.altin@frontsite.com.tr)
Date: Thu 06 Nov 2003 - 06:35:32 EST

  • Next message: Yüksel ÖZCAN: "[linux-programlama] Re: Fork() fonksiyonu"

    On Thu, 2003-11-06 at 10:46, Yüksel ÖZCAN wrote:
    > Herkese selam,
    Merhaba,

    > Hep soylenir durur, linux takki c dili ile win'deki c dili
    > arasinda(ANSI) ki fark fork() fonksiyonudur. Peki nedir bu fork()
    > fonksiyonu. Bunu bana aciklayabilirseniz sevinirim. Kullanimina dair
    > kucuk bi ornek te verebilirseniz sevinirim.

    fork, kullanildigi process'in bir kopyasini, cagrildigi process'e ait
    bir child process olarak olusturur. Kendi programinizdan bir tane daha
    calistirmissiniz gibi, ancak bu islem clone() syscall kullanir ve
    calisan programdan cok hizli bir bicimde bir kopya olusturulur.

            #include <unistd.h>
            #include <sys/types.h>
                                                                                            
            int main(int argc, char *argv[]) {
                pid_t child;
                printf("fork() basliyor.\n");
                child = fork();
                if (child==0) {
                    while(1) {
                        sleep(5);
                        printf("Child calisiyor.\n");
                    };
                } else
                    printf("Child process olusturuldu, programdan cikiliyor.\n");
                return 0;
            };

    bir deneyin. Calistirdiktan sonra ps ile bir bakin neler olduguna :)

    > Birde dun aksam kendi yazdigim programla ilgili bir test yaptim. RH9
    > kullaniyorum. Program yazarken surekli yeniden derleme ve programi
    > calistirmalarim sonucu 1 - 2 saat sonra linux'um felaket bir sekilde
    > yavasliyor. Acaba memory ile ilgili bir sorun mu var diye baktim.
    > terminalde mem yazip tab tusuna basinca bikac komut cikti. Bunlardan
    > memproof yada memprof'u calistirdim. Buradan da execute isimli bolume
    > girip kendi programimi calistirdim. Ve gordum ki programin kullandigi
    > memory surekli artiyor. Programdan bi pencere aciyorum kullandigi
    > memory artiyor, o pencereyi kapatinca dusmesi gerekirken dusmuyor,
    > yeniden acinca da yine artiyor. Dolayisiyle bir sure sonra rh9
    > surunmeye basliyor. memprof programinin icinde leaks(sizinti) diye bir
    > bolum vardi. Ve gordum ki programim surekli memory sizdiriyor. Bu ne
    > manaya geliyor bilen varmi acaba. Programi biraz kurcalayinca fork()
    > fonksiyonunu gordum ama neden orada duruyor hic bir bilgi yok. Bu
    > memory sizintilari neden kaynaklanir acaba. Yardimci olabilirseniz
    > sevinirim. Programi ve kodlari gormek isteyenler
    > http://muhasebeci.iqchoice.com/muhasebeci.tar.gz adresinden programi
    > indirebilir. Simdiden herkese tesekkur ederim.

    Sorununuzun fork ile ilgili oldugunu sanmiyorum, GTK delete_event'da
    window widget altindaki tum diger widget'lari ve bunlarla birlikte
    kullandiginiz tum bellegi, almak icin kullandiginiz fonksiyona uygun
    yolla geri vermeniz gerek. Bellek boyle sizdirilir :)

    Eger bununla ugrasmak istemiyorsaniz, C# deneyin. Isteseniz de bellek
    sizdiramazsiniz :)

    -- 
     __________
    |          |
    |          |  Enver ALTIN (a.k.a. skyblue)
    |          |  Software developer, IT consultant
    |    FRONT |
    |==========|  FrontSITE Bilgi Teknolojisi A.Ş.
    |_____SITE_|  http://www.frontsite.com.tr/
    -- Attached file included as plaintext by Ecartis --
    -- File: signature.asc
    -- Desc: This is a digitally signed message part
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.2.3 (GNU/Linux)
    iD8DBQA/qjICZCB2FZvqK0sRAijlAJ9R80SPGzp2d3vPfyf5Nto1lrgY0gCffGhA
    FTbP148FwBKPujaQOsbycvs=
    =mc/X
    -----END PGP SIGNATURE-----
    

  • Next message: Yüksel ÖZCAN: "[linux-programlama] Re: Fork() fonksiyonu"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.