Giter Club home page Giter Club logo

systemcall's Introduction

Sistem Çağrıları

Sistem çağrıları . Bir komutun, çekirdekten(kernel) hizmet taleb etmesi anlamına gelir. Genelde giriş/çıkıs işlemlerinde bu talebler çekirdeğe iletilir.

Sistem çağrıları(Sınıf)

 File managment
 Process managment
 Communication
 Error and Signal hadling

prog -> libC.so kullanıp write() -> kernel (buffer'a yazar)
prog -> write() direk sistem cağrısıyla hedefe yazar.

Kütüphane yardımıyla yapılan I/O işlemleri stdio ile olur ve yazimlarda öncelik buffer yazılır. Eğer kütüphane yardımı olmadan direk sistem çağrısıyla erişiyorsanız (unbuffered)I/O bufferlanmadan yazilir. Bufferda bekletilen veriler 4 yolla hedefe ulaşır.

1- Buffer doldugunda hedefe yazilir. 2- Gönderilen veride new line karakteri varsa hedefe yazılır.
3- Buffer yazan sürecin icrasi sona erdiğinde hedefe yazilir.
4- flush() komutu kullanarak hedefe yazılır.

error yazilari bufferlanmaz direk yazilir.


  char buff[] = "---";
  char buff2[] = "***";
  char buff3[] = "!!!";

  fprintf(stdout,buff2);
  fprintf(stderr,buff3);
  int a = write(2,buff,4);

  out: !!!---***  

NOT

Bütün sistem çağrilari geri birşey döndürür fakat exit() geriye birşey döndürmez.

Open

int open( path, flags, mode );

Biçiminde dosya erişimi açmaya yarayan bir sistem çağrısıdır.

path : ile dosya yolunu veriyoruz.
flags : ile erişilen dosyaya ne yapmak için erişildiğini belirtiyor.
mode : ile eğer dosya ilk defa oluşturuluyorsa dosya erişim izinlerini veriyoruz.

Flags :
O_RDONLY : Sadece Okuma
0_WRONLY : Sadece Yazma
O_RDWR : Hem Yazma Hem okuma
O_APPEND : Son satirdan itibaren Yazma
O_CREAT : Dosya Oluşturma
O_TRUNC : Dosta mevcut ise içeriği sil

Bash kullanilan > fd yonlendirme open komutu ile O_WRONLY|O_CREAT|O_TRUNC setlenerek yapılır. >> fd yönlendirmesi. O_WRONLY|O_CREAT|O_APPEND setlenerek yapılır.

Mode :

Dosya erişim izinleri atama 777 vs 0777 vs 0x777 gibi

Open geriye bir integer değer döndürür bu deger file description (fd) dir. Dosyanın tanımlayan fd dir. bu değerler 0-255 arasında değişen değerlerdir. 0 (stdin) 1(stdout) 2(stderr) bunlardan sonra gelicek en kucuk değerler sırasıyla atanır. Bash shell üzerinden değeri kendimizde verebiliriz. exec 5>file 5.fd yı file adında dosyaya yazmak için eriştik.

READ

int read(fd, buff, leng);

geriye döndürdüğü değer ne kadar okuma yaptığı bilgisi yer alır.

WRITE

int write(fd, buff, leng);

geriye döndürdüğü değer ne kadar yazdığı bilgisi yer alır.

CLOSE

int close(fd)

fd serbest bırakır. Geçerli bir fd değilse -1 döndürür.

LSEEK

int lseek(fd, offset, whence);

file pointer ın yerini değiştirmeye yarıyor. file pointer: kaynak üzerinde okuma yazma yapacağı konum. Geriye döndürdüğü değer yeni offset yani konumu.

whence

SET : Herhangi bir referans almaz offset atanan değer kadar ilerletir.
CUR : File pointer bulunduğu konumdan itibaren offset kadar ilerletir.
END : Dosya sonundan itibaren - offset vererek sondan konumlandırma yaparız.

lseek -1 dönerse kaynak yok yani file pointer yok.

CREAT

int creat(path, mode)

open(path,O_WRONLY|0_CREAT|O_TRUNC) la eşdeğerdir.

systemcall's People

Contributors

burkaydurdu avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.