7 Mart 2012 Çarşamba

if( fork() ) ????

if(fork()) nedir? if( fork() ) aslında if( fork() != 0 ) yani fork komutunun geri dönüş değerine göre child mi yoksa parent mi döndürecek onu göstermektedir.Bildiğimiz gibi sıfır dönerse child,sıfırdan farklı dönerse parent olduğunu gösterir.Eğer -1 döndürürse hata verir bunuda unutmayalım


#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>




int main()
{
pid_t cocuk_pid;
printf("Parent process id = %d\n", (int)getpid() );
cocuk_pid=fork();


if (cocuk_pid!=0)
{
printf("burası parenttir , process id =%d\n",(int)getpid());
printf("child process id = %d\n",(int)cocuk_pid);
}
else
{
printf("burası child processdir, process id=%d\n", (int)getpid());
}
return 0;
}


fork() komutu ve C diliyle network e giriş

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)

5 Mart 2012 Pazartesi

Ubuntu'da .rar dosyasını açmak

1.Adım
Uygulamalar(Applications)>Donatılar(Accessories)>Uçbirim(Terminal)
Karşımıza çıkan komut satırına
sudo apt-get install rar yazılır

2.Adım
Mevcut .rar uzantılı dosyamıza sağ tıklanıp Buraya çıkart kısmına basılarak aynı isimli dizinde dosyamız rardan dışarı çıkartılır.Hayırlı olsun :D

3 Mart 2012 Cumartesi

Ubuntu'da C kodu yazmak ve çalıştırmak

1.Adım
Uygulamalar(Applications)>Donatlar(Accessories)>Uçbirim(Terminal) açılır
2.Adım
Karşımıza çıkan konsola gedit deneme.c yazılır
deneme kısmına dosyanın adı yazılır örnek olsun diye deneme yazdım.

3.Adım
Kodu yazdıktan sonra karşınıza editör çıkacak.Burası C kodumuzu yazacağımız yerdir.Örnek olarak basit bir C kodu yazılmıştır.
4.Adım
Kodumuzu yazdıktan sonra kaydedip kapatıldıktan sonra konsola geri dönülür.Yanlız kaydetmeyi unutmayın yoksa dosyanız yazdığınız gibi derlenip çalışmaz.
Konsola gcc -c deneme.c yazılır.Yazdıktan sonra deneme.c nin bulunduğu dosyanın içinde deneme.o adında bir dosya oluşur
5.Adım
Konsol satırına gcc deneme.o -o deneme yazılır
Burada gcc kullandığımız c derleyicimizin adı.deneme.o object dosyası dediğimiz deneme.c dosyasından türetilmiş makine kodlarını barındıran dosyadır. -o komutu object dosyasını çalıştırılabilir bir programa dönüştüren koddur.deneme ise çalıştırılabilir C programımızın adıdır.
Yazdıktan sonra konumda çalıştırılabilir deneme adında çalıştırılabilir dosya oluşacaktır.
6.Adım
Konsol satırına ./deneme yazılarak C programımız çalıştırılır.

THE END