UNIX Türevi Sistemlerde Temel Dosya Fonksiyonları: open, close, read, write ve lseek

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "UNIX Türevi Sistemlerde Temel Dosya Fonksiyonları: open, close, read, write ve lseek"

Transkript

1 UNIX Türevi Sistemlerde Temel Dosya Fonksiyonları: open, close, read, write ve lseek Kaan Aslan 12 Temuz 2008 Dosya sözcüğünü çok sık kullanırız. Fakat bu sözcüğü tanımlayabilmek o kadar kolay değildir. Sahi nedir dosya? Dosyalar ikincil belleklerde tanımlanmış olan alanlardır. Bir dosyanın ismi ve erişim hakları gibi çeşitli özellikleri vardır. Dosyalara isimleriyle erişiriz. Erişim hakları o dosya üzerinde hangi işlemleri yapabileceğimizi belirtir. Dosyaların ikincil belleklerde nasıl tutulacağına ve onlara nasıl erişileceğine ilişkin belirlemeler tamamen işletim sistemi tarafından yapılmaktadır. Bir dosya açıldığında işletim sistemi bellekte oluşturduğu veri yapıları sayesinde dosyanın ikincil bellekteki fiziksel varlığıyla bağlantı kurar. Sunduğu çeşitli sistem fonksiyonlarıyla dosyadan bilgi okumayı, dosyaya bilgi yazmayı mümkün hale getirir. İşletim sistemlerinin dosya işlemleriyle ilgili bölümlerine kavramsal olarak dosya sistemi (file system) deniyor. Dosya sistemi işletim sistemlerinin gerçekleştirilmesi en zor alt sistemlerinden biridir. Bir işletim sisteminin performansı önemli ölçüde bu alt sisteme bağlıdır. İşletim sisteminin dosya sistemlerinin iki önemli görevi vardır. Bunlardan ilki ikincil belleklerdeki düzenlemeyi oluşturmaktır. Dosya parçalarının ikincil belleklerin neresinde ve nasıl tutulacağına yönelik birtakım belirlemelerin yapılmış olması gerekir. Örneğin bugün kullandığımız diskler sektör denilen parçalardan oluşuyor. Ardışıl sektör grupları ise disk blokları olarak numaralandırılıyor. Dosya sistemi hangi dosyaların hangi disk bloklarında tutulduğuna ilişkin düzenlemeleri yapmak zorundadır. İşletim sisteminin dosya sisteminin ikinci önemli görevi ise ikincil belleklerde belli bir düzene göre oluşturulmuş dosya bloklarını programcıya ardışıl byte topluluğu biçiminde sunmaktır. İşletim sistemi diskte çeşitli bloklara yayılmış bir biçimde bulunan dosyayı programcıya sanki ardışıl byte lardan oluşuyormuş gibi gösterir. Dosyadaki her byte ın -ilk byte sıfır olmak üzere- dosyanın kaçıncı byte ı olduğunu belirten bir offset değeri vardır. Programcı bilginin hangi disk bloklarında tutulduğuyla değil hangi offset te bulunduğuyla ilgilenir. Şüphesiz işletim sisteminin bütün bunları yapabilmesi için bellekte pek çok veri yapısını oluşturması ve bu veri yapılarına dayanarak çeşitli izlemeleri yapması gerekir. Programlama sırasında kendimizin ya da derleyicinin yaptığını sandığımız tüm dosya işlemleri aslında işletim sisteminin bir grup sistem fonksiyonu tarafından gerçekleştirilmektedir. Pek çok işletim sisteminde dosya açan, dosya kapatan, dosyadan okuma yapan, dosyaya yazma yapan, dosya göstericisini konumlandıran temel sistem fonksiyonları bulunur. Bu sistem fonksiyonları da çekirdek moduna geçerek bu işlemleri belli bir düzen içerisinde yürütür. İşletim sistemlerinin dosya sistemine ilişkin sistem fonksiyonları işletim sisteminden işletim sistemine, isim ve parametrik yapı bakımından farklılık göstermektedir. Örneğin Windows sistemlerinde dosyalar CreateFile isimli sistem fonksiyonu ile açılırken, UNIX/Linux sistemlerinde open sistem fonksiyonuyla açılmaktadır. Bu fonksiyonların parametrik yapıları 1

2 arasında önemli farklılıklar vardır. Her işletim sisteminin kendine özgü olanaklarını uç noktada kullanabilmek için bazen işletim sistemine özgü sistem fonksiyonlarından doğrudan faydalanma yoluna gidilebilir. UNIX türevi işletim sistemlerinin dosya sistemleri yapısal olarak birbirlerine çok benzer. Klasik Unix Sistem-V in dosya sistemine SVFS (System-V File System) deniliyordu. UNIX sistemlerinin dosya sistemleri zamanla çeşitli biçimlerde geliştirilmiştir. En önemli gelişme Berkley tarafından ilk kez BSD sistemlerinde kullanılmış olan FFS (Fast File System) tasarımıdır. Bugünkü UNIX sistemlerinin çoğu FFS türevlerini kullanmaktadır. Linux sistemlerinde bu dosya sistemine yeni ekler yapılmıştır. Linux un kullandığı bu sistemler Ext1, Ext2, Ext3 biçiminde isimlendirilmiştir. Tüm UNIX türevi sistemlerinin dosya sistemlerine ilişkin disk düzenlemesi birbirlerine benzer. Bu disk düzenleme sistemine kısaca i-node sistemi denilebilir. i- node sisteminde her dosyanın i-node numarası denilen ve dosya sistemi genelinde tek olan bir id numarası vardır. Dosyanın id numarası disk üzerinde onun yerinin belirlenmesinde önemli bir kullanıma sahiptir. UNIX türevi sistemlerin en önemli özelliklerinden biri sistemdeki aygıtlara, çeşitli çekirdek nesnelerine sanki onlar birer dosyaymış gibi dosya fonksiyonlarıyla erişilmesidir. Böylece çeşitli kavramların dosya kavramı içerisinde ifade edilmesi sistem programcısının işini kolaylaştırmaktadır. Örneğin tipik bir UNIX türevi sistemde borular (pipes) dosya değildir ama sanki birer dosyaymış gibi ele alınırlar. Dosyalar üzerinde işlem yapan read ve write fonksiyonları borularda da kullanılabilir. Aygıtların ve birtakım kavramların da sanki birer dosyaymış gibi ele alınması nesne yönelimli programlama tekniğindeki çokbiçimlilik (polymorphism) benzeri bir soyutlamaya olanak sağlamaktadır. Gerçekten de UNIX türevi sistemlerin kullandığı dosya sistemlerinin tasarım ve yazımında böyle çokbiçimli bir teknik kullanılmaktadır. Bu tekniğe Sanal Dosya Sistemi (Virtual File System) denir. UNIX/Linux sistemlerinde dosya sistemine ilişkin temel 5 POSIX fonksiyonu vardır. open fonksiyonu dosyayı açmak ya da yaratmak için, close fonksiyonu dosyayı kapatmak için, read fonksiyonu dosyadan okuma yapmak için, write fonksiyonu ise dosyaya yazma yapmak için kullanılır. lseek fonksiyonuyla da dosya göstericisi konumlandırılabilir. Bu fonksiyonların nasıl kullanıldığını bilmek önemlidir. Tabi önce dosya sistemine ilişkin temel güvenlik sistemi üzerinde duracağız Dosya Sistemine İlişkin Temel Güvenlik Sistemi Birden çok kişinin birlikte çalışabildiği sistemlerde her kullanıcının her istediği dosyaya erişememesi gerekir. Kullanıcıların hangi dosyalara hangi düzeyde erişebilecekleri yalın bir güvenlik sistemi ile belirlenmiştir. Her kullanıcının sisteme girdiğinde bir kullanıcı id si ve bir de grup id si aldığını biliyorsunuz. Kullanıcı ve grup id lerinin aslında birer sayı olduğunu fakat isimsel bir biçimde de temsil edildiğini anımsatalım. İşte dosyalara erişimde dosyaya erişecek prosesin (etkin) kullanıcı id si ve (etkin) grup id si etkili olmaktadır. [1] 2

3 UNIX/Linux sistemlerinde her dosyanın bir sahibi ve bir grubu vardır. Grup belli bir sayıda kullanıcının oluşturduğu topluluktur. Dosyanın sahibinin ve grubunun ne olduğu ls l komutu ile elde edilebilir. Örneğin: ls l test biçiminde bir komut uygulayrak test dosyasının bilgilerini aşağıdaki gibi elde etmiş olalım: -rw-r r 1 kaan project 1219 Jan 31 22:32 test Buradan dosyanın sahibinin kaan kullanıcısı olduğunu ve dosyanın project isminde bir gruba ilişkin olduğunu görülüyor. En soldaki sütun dosyanın türü ve erişim bilgileri hakkında bilgi vermektedir. Bu grubun en solundaki karakter dosyanın türünü belirtir. Örneğin dosya bir dizin dosyasıysa bu karakter d, soket dosyasıysa s ve bir boru (pipe) dosyası ise p biçimindedir. Bu karakterin biçiminde olması dosyanın normal bir dosya olduğu anlamına gelir. Diğer karakterler üçerliden üç grup oluşturmaktadır. İlk grup dosyanın sahibine (owner) ilişkin erişim haklarının neler olduğunu belirtir. İkinci grup dosyanın grubuyla (group) aynı gruptan olanların hangi haklara sahip olacağını belirtmektedir. Üçüncü grup ise ne dosyanın sahibi ne de dosya ile aynı gruptan olan birisinin, yani herhangi bir kişinin (other) haklarını belirtmektedir. Üçerli gruptaki karakterlerin birincisi ya r olur ya da biçiminde olur. r okuma hakkınının olduğunu ise okuma hakkının olmadığını göstermektedir. Üçlü gruptaki karakterlerin ikincisi ya w olur ya da olur. w dosyaya yazma hakkının olduğunu, ise olmadığını belirtir. Nihayet üçlü gruptaki son karakter ya x olur ya da olur. x bu dosya eğer çalıştırılabilir bir program dosyası ise dosyayı çalıştırma hakkının bulunduğunu belirtmektedir. ise dosyayı çalıştırma hakkının bulunmadığını belirtir. Yukarıdaki örnekte dosyanın sahiplik hakları rw- biçimindedir. O halde bu dosyanın sahibinin bu dosyadan okuma ve bu dosyaya yazma hakkı vardır. Dosya zaten çalıştırılabilir bir dosya olmadığı için dosyanın sahibinin dosyayı çalıştırması söz konusu değildir. Benzer biçimde dosyanın grubuyla aynı gruptan olan bir kişi dosyadan yalnızca okuma yapabilir. Dosya ile sahiplik ya da grup ilişkisi içerisinde olmayan sıradan kullanıcılar da dosyadan yalnızca okuma yapabilirler. Başka bir dosyanın bilgileri aşağıdaki biçimde olsun: -rw-rw-r-- 1 kaan project 1219 Jan 31 22:32 sample 3

4 Burada dosya yine sıradan bir dosyadır. Dosyanın sahiplik hakları rw- biçiminde olduğu için dosyanın sahibi dosyadan hem okuma yapabilir hem de dosyaya yazma yapabilir. Benzer biçimde dosyanın grup haklarının da rw- biçimde olduğunu görüyoruz. Yani dosyanın sahibi olmadığı halde onunla aynı gruptan olan birisi de dosya üzerinde okuma ve yazma işlemleri yapabilir. Fakat dosyanın sahibi olmayan ve dosya ile aynı gruptan da olmayan birisi ancak dosyadan okuma yapabilecektir. Dosyanın sahibi aynı zamanda herhangi bir kişi değildir. Yani dosyanın sahibi olan kişi dosyaya yazma yapamadığı halde herhangi birisi bu hakka sahip olabilir. Örneğin, dosyanın erişim haklarının aşağıdaki gibi olduğunu düşünelim: --r--rw-rw- kaan project 1219 Jan 31 22:32 sample Burada dosyanın sahiplik hakları r biçimindedir. Yani dosyanın sahibi yalnızca dosyadan okuma yapabilir. Oysa dosyanın sahibi olmayan birisi dosyanın sahibinden daha fazla haklara sahiptir. Tabi sıradan birisinin dosyanın sahibinden daha fazla haklara sahip olması çoğu kez anlamlı değildir. Burada anlatmak istediğimiz nokta dosyanın sahibinin yalnızca sahiplik hakları ile teste sokulduğudur. Benzer biçimde dosya ile aynı grupta bulunan birisi de yalnızca grup hakları ile test işlemine sokulacaktır. Dosya sistemine ilişkin güvenlik mekanizması dosyayı açan open sistem fonksiyonu tarafından denetlenir. Örneğin, yazma hakkına sahip olmadığımız bir dosyaya yazma yapmak isteyelim. Bu dosyaya yazma yapma gibi bir niyetimiz olduğuna göre dosyayı open sistem fonksiyonuyla yazma yapacak modda açmamız gerekir. İşte dosyayı daha open fonksiyonuyla açarken open fonksiyonu dosyanın erişim haklarına bakacak ve dosyayı açamayacaktır. Yani biz hatayı write fonksiyonu ile yazma yaparken değil, daha işin başında open fonksiyonuyla dosyayı açarken alacağız. Bir ya da birden çok sayıda kullanıcı bir grup oluşturabilir. Dosyanın sahibi dosyayı yaratan kişi, grubu ise dosyanın sahibinin ilişkin olduğu gruptur. (Bu konuda söyleyeceklerimiz var). Örneğin, kaan isimli kullanıcı project isimli grubun elemanı olsun ve bu kullanıcı a.dat isimli bir dosya yaratmış olsun. a.dat dosyasının sahibi kaan, grubu ise project olacaktır. UNIX sistemlerinde eskiden bir kullanıcı yalnızca bir gruba ilişkin olabiliyordu. Bu kavram daha sonra genişletilmiştir; bir kullanıcının tek bir gerçek grubu vardır, bunun dışında birden fazla ek gruba sahip olabilir. Dosyanın grubu onu yaratan kullanıcının gerçek grubuna ilişkindir. Daha önce de belirttiğimiz gibi, bir kullanıcının gerçek grubu /etc/passwd dosyasında, her grupta hangi kullanıcıların bulunduğu ise /etc/group dosyasında tutulmaktadır. Erişim İşleminin Adımları Bir dosyaya erişmek isteyen prosesin erişim denetimi sırasıyla şu adımlarla yapılır: 1. Eğer erişen prosesin etkin kullanıcı id si 0 ise (yani erişmek isteyen proses root ise) erişim kabul edilir. Değilse sonraki adıma geçilir. 2. Erişimi yapan prosesin etkin kullanıcı id si ile dosyanın kullanıcı id si aynı ise (yani proses kendisine ait bir dosyaya erişmek istiyorsa) erişimin biçimine bakılır. Erişim okuma amaçlıysa ve dosyanın sahiplik haklarında r varsa, erişim yazma amaçlıysa 4

5 ve dosyanın sahiplik haklarında w varsa ya da erişim hem okuma hem de yazma amaçlıysa ve dosyanın sahiplik haklarında rw varsa erişim kabul edilir. Eğer yapılan erişim bir programı çalıştırmaya yönelikse ve dosyanın sahiplik haklarında x varsa erişim kabul edilir. Değilse sonraki adıma geçilir 3. Erişimi yapan prosesin etkin grup id si dosyanın grup id si ile aynı ise ya da erişimi yapan prosesin ek grup id lerinden biri dosyanın grup id si ile aynıysa (yani proses kendi gruplarına ait bir dosyaya erişmek istiyorsa) erişimin biçimine bakılır. Erişim okuma amaçlıysa ve dosyanın grup haklarında r varsa, erişim yazma amaçlıysa ve dosyanın grup haklarında w varsa ya da erişim hem okuma hem de yazma amaçlıysa ve dosyanın grup haklarında rw varsa erişim kabul edilir. Eğer yapılan erişim bir programı çalıştırmaya yönelikse ve dosyanın erişim haklarında x varsa erişim kabul edilir. Değilse sonraki adıma geçilir. 4. Erişimi yapan proseses herhangi bir proses ise bu kez dosyanın diğerlerine ilişkin erişim haklarına bakılır. Erişim okuma amaçlıysa ve dosyanın diğer haklarında r varsa, erişim yazma amaçlıysa ve dosyanın diğer haklarında w varsa ya da erişim hem okuma hem de yazma amaçlıysa ve dosyanın diğer haklarında rw varsa erişim kabul edilir. Eğer yapılan erişim bir programı çalıştırmaya yönelikse ve dosyanın erişim haklarında x varsa erişim kabul edilir. Değilse erişim haklarının yetersizliği nedeniyle erişim engellenir. Yukarıda da belirttiğimiz gibi bu kontroller her dosya fonksiyonunda değil yalnızca open fonksiyonunda yapılmaktadır. Dosya Göstericisi Kavramı Dosyadaki tüm byte lara ilk byte sıfır olmak üzere artan sırada bir offset numarası karşılık getirilmiştir. Örneğin x.txt dosyasının içersinde Ankara yazısının karakterleri bulunuyor olsun. Yazı karakterlerinin ASCII tablosuyla birer byte olarak kodlandığını varsayalım. Dosyadaki karakterlerin offset numaraları şöyledir Dosya göstericisi kavramının C/C++ daki göstericilerle bir ilgisi yoktur. Dosya göstericisi o anda dosyanın hangi offset inden itibaren işlem yapılacağını belirten bir sayıdır. Dosya işlemleri yapan sistem fonksiyonları dosyanın neresine ilişkin işlem yapılacağını fonksiyonu çağırandan almazlar. Bu fonksiyonlar her zaman dosya göstericisinin belirttiği offset ten itibaren işlemlerini yaparlar. Örneğin biz read fonksiyonu ile dosyanın 100 üncü byte ından itibaren 10 byte okumak isteyelim. Bu fonksiyon bizden kaç byte okuma yapacağımızı ister fakat nereden itibaren 10 byte okunacağını istemez. İşlemini dosya göstericisinin gösterdiği yerden itibaren yapar. Bu durumda bizim fonksiyonu çağırmadan önce dosya göstericisini 100 üncü offset e konumlandırmamız gerekir. Dosya göstericisi dosya açıldığında 0 ıncı offset tedir: 5

6 Okuma ve yazma yapan sistem fonksiyonları dosya göstericisini okunan ya da yazılan miktar kadar otomatik ilerletmektedir. Örneğin biz bu dosyadan read fonksiyonu ile 2 byte okuyalım. A ve n karakterlerini okumuş oluruz. Bu işlemin sonucunda dosya göstericisi k karakterini gösteriyor duruma gelir: şimdi 4 byte daha okuyalım: Artık dosya göstericisi dosyanın sonuna gelmiştir. Dosya göstericisinin bu biçimde dosyada olmayan dosyanın son byte ından sonraki byte ı göstermesi durumuna EOF (End Of File) durumu denir. EOF durumundan okuma yapılamaz. Eğer okuma yapılmak istenirse okuma yapan fonksiyonlar başarısızlıkla geri döner. Ancak eğer dosya uygun bir biçime açılmışsa EOF durumunda dosyaya yazma yapılabilir. Bu durum dosyaya ekleme anlamına gelir. Yani dosyaya ekleme yapmak istiyorsak dosya göstericisini EOF durumuna çektikten sonra yazma yapmalıyız. open Fonksiyonu open fonksiyonu var olan dosyayı açmak ya da varolmayan bir dosyayı yaratıp açmak için kullanılan en temel fonksiyondur. Prototipi <fcntl.h> dosyası içerisindedir. int open(const char *pathname, int oflags,...); Gördüğünüz gibi fonksiyonun iki zorunlu parametresi vardır. Birinci parametre açılacak dosyanın yol ifadesini belirtir. Fonksiyonun ikinci parametresi dosya açış modunun belirlenmesinde kullanılır. Bu parametre O_ öneki ile başlayan çeşitli sembolik sabit biçimindeki bayrakların işlemi ile (bit veya operatörü) birleştirilmesinden oluşturulur. POSIX standartlarında O_XXX biçimindeki bu 6

7 sembolik sabitlerin sayısal değerleri hakkında birşey söylenmemiştir. Yani sayısal değerleri sistemden sisteme farkılık gösterebilir. Dosyaya erişim isteği (yani dosyanın okuma mı yoksa yazma amaçlı mı açılacağı) için üç bayrak kullanılır: O_RDONLY O_WRONLY O_RDWR Dosyayı açarken bu bayraklardan yalnızca biri kullanılmak zorundadır. Bir open çağırmasında bu bayraklardan hiçbirinin kullanılmamış olması ya da birden fazlasının kullanılmış olması hata oluşturur. Eğer dosyayı yalnızca okuma amaçlı açmak istiyorsak O_RDONLY bayrağını, yalnızca yazma amaçlı açmak istiyorsak O_WRONLY bayrağını, hem okuma hem de yazma amaçlı açmak istiyorsak O_RDWR bayrağını kullanmamız gerekir. [2] Açış modlarını belirten yukarıdaki üç bayrağa aşağıdaki bayraklar eklenebilir: O_CREAT: Bu bayrak dosya yoksa yarat anlamına gelir. Eğer dosya varsa bu bayrağın bir etkisi yoktur. Örneğin, a.dat isimli bir dosyayı O_RDWR O_CREAT bayraklarıyla yaratmaya çalışalım. Eğer a.dat dosyası varsa O_CREAT bayrağının bir etkisi olmaz. Fakat eğer a.dat dosyası yoksa önce bu dosya yaratılacak sonra da açılacaktır. Dosyanın yaratılması durumunda open fonksiyonuna üçüncü parametre girilmelidir. open fonksiyonunun bu üçüncü parametresi izleyen paragraflarda ele alınmaktadır. O_APPEND: Bu bayrak her türlü yazma işleminin dosyanın sonuna ekleme anlamına geleceğini belirtmektedir. Başka bir deyişle her türlü yazma işleminde önce dosya göstericisi sona çekilir, ondan sonra yazma yapılır. Örneğin O_RDWR O_APPEND belirlemesi ile dosyanın herhangi bir yerinden okuma yapılabilir, fakat tüm yazma işlemleri otomatik olarak dosyanın sonuna yapılır. O_RDONLY O_APPEND gibi bir belirleme hata oluşturmaz ancak buradaki O_APPEND bayrağının bir etkisi yoktur. O_EXCL: Bu bayrak ancak O_CREAT ile birlikte kullanılabilir. Tek başına kullanılamaz. O_CREAT O_EXCL dosya yoksa yarat fakat dosya varsa başarısızlıkla geri dön anlamına gelmektedir. Örneğin, a.dat isimli bir dosyayı O_CREAT O_EXCL bayraklarıyla yaratmaya çalışalım. Eğer a.dat dosyası yoksa önce bu dosya yaratılarak açılacaktır. Fakat a.dat dosyası varsa open fonksiyonu başarısızlıkla geri dönecektir O_TRUNC: Bu bayrak ancak O_WRONLY ya da O_RDWR bayraklarıyla kullanılabilir. Bu belirleme yazma amaçlı açılan dosyanın içeriğinin silineceği yani açılan dosyanın sıfırlanacağı anlamına gelir. Örneğin, a.dat isimli dosyayı O_RDWR O_TRUNC bayraklarıyla açmak isteyelim. Eğer dosya varsa açılarak içeriği sıfırlanacaktır. Dosya yoksa O_CREAT bayrağı kullanılmadığı için open fonksiyonu başarısız olacaktır. Aşağıdaki bayraklar ise seyrek kullanılırlar. Biz burada yalnızca temel açıklamalar yapacağız. 7

8 O_SYNC: Dosya eşzamanlı (senkron) işlemlere yönelik açılır. Bu durumda dosyaya yapılan yazmalarda disk-cache sistemi kullanılmaz. Yazma doğrudan fiziksel aygıta yapılır ve yazma yapan proses yazma bitene kadar bloke edilir. O_NOCTTY: Eğer açılan dosya bir terminal dosyasıysa söz konusu terminal prosesin kontrol terminali yapılmaz. O_NONBLOCK: Bu açış modu blokesiz işlemler yapmak için kullanılır. open fonksiyonunda kullanılan O_NONBLOCK, O_NOCTTY, O_SYNC gibi diğer bayrakların işlevleri ileride çeşitli konular içerisinde ele alınacaktır. Şimdi bu bayrak birleşimlerine ilişkin çeşitli örnekler üzerinde duralım: - Dosyayı O_RDONLY modu ile açmaya çalışalım. Bu durumda dosya eğer varsa ve dosyanın erişim hakları izin veriyorsa dosya açılır. Eğer dosya yoksa ya da erişim hakları izin vermiyorsa open fonksiyonu başarısız olur. - Dosyayı O_WRONLY O_CREAT moduyla açmaya çalışalım. Bu durumda dosya varsa ve erişim hakları izin veriyorsa dosya yazma modunda açılır. Dosya yoksa dosya yaratılırak yazma modunda açılır - Dosyayı O_RDWR O_CREAT O_EXCL modunda açmaya çalışalım. Dosya yoksa ve erişim hakları izin veriyorsa dosya yaratılır ve dosya hem yazma hem de okuma modunda açılır. Eğer dosya varsa açılmaz, open fonksiyonu başarısızlıkla geri döner. - Dosyayı O_RDWR O_CREAT O_TRUNC modunda açmaya çalışalım. Dosya varsa sıfırlanır ve açılır, dosya yoksa yaratılır ve açılır. Dosyadan okume ve dosyaya yazma yapılabilir. - Dosyayı O_WRONLY O_TRUNC modunda açmaya çalışalım. Dosya varsa sıfırlanır ve açılır, yoksa open fonksiyonu başarısızlıkla geri döner. open fonksiyonunun değişken sayıda parametre aldığını prototipinden anlamışsınızdır. Aslında open fonksiyonu ya iki parametre alır ya da üç parametre alır. Eğer dosyanın açış modu O_CREAT içeriyorsa dosyanın yaratılma olasılığı vardır. Bu durumda programcının kullanılma olasılığına karşı fonksiyonun üçüncü parametresini girmesi gerekir. Dosya açış modunda O_CREAT yoksa üçüncü parametreyi girmenin de bir anlamı yoktur. [3] open fonksiyonunun üçüncü parametresi dosyanın yaratılması durumunda dosyanın erişim haklarını belirlemekte kullanılır. Erişim hakları dosyanın sahibinin, grubunun ve diğerlerinin ne yapabileceğini belirler. Bu parametre aşağıdaki sembolik sabitlerin operatörü ile birleştirilmeleri ile elde edillir: S_IRUSR S_IWUSR S_IXUSR S_IRWXU S_IRGRP S_IWGRP Dosyanın sahibi için 'r' hakkı Dosyanın sahibi için 'w' hakkı Dosyayı sahibi için 'x' hakkı Dosyanın sahibi için 'r', 'w' ve 'x' hakları (S_IRUSR S_IWUSR S_IXUSR) Dosyanın grubu için 'r' hakkı Dosyanın grubu için 'w' hakkı 8

9 S_IXGRP S_IRWXG S_IROTH S_IWOTH S_IXOTH S_IRWXO Dosyayı grubu için 'x' hakkı Dosyanın grubu için 'r', 'w' ve 'x' hakları (S_IRGRP S_IGRP S_IXGRP) Diğerleri için 'r' hakkı Diğerleri için 'w' hakkı Diğerleri için 'x' hakkı Diğerleri için 'r', 'w' ve 'x' hakları (S_IROTH S_IOTH S_IXOTH) Sembolik sabitlerin hepsinin S_I öneki ile başladığna dikkat ediniz. Bundan sonra erişim hakkının nasıl olduğunu belirten R, W ya da X harfleri gelmektedir. Nihayet bu harfleri de erişimin kim için geçerli olduğunu anlatan USR, GRP ya da OTH kısaltmaları getirilmiştir. Grupların sonundaki makrolar o grubun tüm haklarının birleşimini belirtmektedir. open fonksiyonu başarı durumunda dosyayı temsil eden bir dosya betimleyicisine, başarısızlık durumunda -1 değerine geri döner. Dosya betimleyicisi açılmış bir dosyayı temsil eden int türden bir değerdir. Diğer dosya fonksiyonları bu betimleyici değeri parametre olarak isterler. open fonksiyonunun kullanılmayan en düşük dğerli dosya betimleyicisine geri döneceği standartlarda garanti altına alınmıştır. open fonksiyonu başarısızlık durumunda -1 değeri ile geri dönmeden önce errno değişkenine başarısızlığın nedenini anlatan değeri yükler. open fonksiyonunun başarısızlığına yol açabilecek tipi durumlar şunlardır: EACCESS : Dosyaya erişim hakları yetersizdir EEXIST : Dosya O_CREAT O_EXCL bayraklarıyla açılmaya çalışılmıştır ve dosya var olduğundan dolayı hata oluşmuştur. ENOENT : O_CREAT kullanılmadan dosya yaratılmaya çalışılmıştır. Fakat dosya yoktur. Ya da dosyaya ulaşmaya çalışan yol ifadesindeki dizinlerden biri bulunamamıştır.. EMFILE : OPEN_MAX sayısından daha fazla dosya açık durumdadır. Yani prosesin açabileceği en fazla dosya sayısı aşılmıştır. ENFILE : Sistem düzeyinde açılabilecek en fazla dosya sayısı aşılmıştır. EINVAL : open fonksiyonunun oflags parametresi yanlış birleşimlerle oluşturulmuştur.... :... Yukarıdaki tabloda tüm hata durumlarını listelemeyi uygun görmedik. Yalnızca en sık karşılaşılan hata durumlarını belirttik. Hata durumlarının tüm listesini POSIX standartlarından ya da UNIX/Linux man sayfalarından edinebilirsiniz. 9

10 Aşağıda open fonksiyonunun tipik bir kullanımını görüyorsunuz: int fd; /* dosya betimleyicisi */... if ((fd = open("test", O_RDWR)) == -1) { perror("open"); exit(exit_failure); } Başarısızlık durumunda hata nedeninin perror fonksiyonuyla yazdırılıp programının sonlandırıldığını görüyorsunuz. open fonksiyonunun yanı sıra creat isimli bir POSIX fonksiyonu da vardır: int creat(const char *path, mode_t mode); Fonksiyonun birinci parametresi dosyanın yol ifadesini ikinci parametresi erişim haklarını belirtir. Geri dönüş değeri yaratılan dosyaya ilişkin dosya betimleyicisidir. Aslında creat fonksiyonu open fonksiyonunun özel bir biçimidir. Yani: creat(path, mode); çağrıması ile, open(path, O_WRONLY O_CREAT O_TRUNC, mode); çağırması tamamen eşdeğerdir. creat fonksiyonu ilk UNIX sistemlerinden beri bulunmaktadır. Geçmişe doğru uyumu korumak için POSIX standartlarında da bulundurulmuştur. close Fonksiyonu Açılan her dosyayı işinizi bitirdikten sonra kapatmalısınız. Dosyayı kapatmak için close fonksiyonu kullanılmaktadır: int close(int fd); Fonksiyonun prototipi <unistd.h> dosyası içerisindedir. close fonksiyonu başarı durumunda 0 değerine başarısızlık durumunda 1 değerine geri döner ve errno değerini hatayı belirten bir değerle doldurur. Başarılı bir biçimde açılmış olan bir dosyanın kapatılamaması durumu karşılaşabileceğiniz normal bir durum değildir. Eğer close fonksiyonuna argüman olarak yanlış bir betimleyici geçmişseniz fonksiyon -1 ile geri döner ve errno değişkenini EBADF değerini yüklenir. close fonksiyonu sinyal dolayısıyla da başarısız olabilir. Aslında açtığımız dosyayı program sonuna kadar kullanacaksak program sonlanmadan önce kapatmak zorunda değiliz. Proses exit ya da _exit fonksiyonlarıyla sonlandırıldığında kapatılmamış olan dosyalar otomatik olarak kapatılmaktadır. 10

11 read ve write Fonksiyonları read fonksiyonu dosya göstericisinin gösterdiği yerden itibaren n byte okumak için write fonksiyonu da n byte yazmak için kullanılır. Fonksiyonların prototipleri <unistd.h> içerisindedir: ssize_t read(int fd, void *buf, size_t nbyte); ssize_t write(int fd, const void *buf, size_t nbyte); Fonksiyonların birinci parametreleri okuma ya da yazma işleminin yapılcağı dosyaya ilişkin dosya betimleyicilerini, ikinci parametreleri bellekteki aktarım adreslerini ve üüncü parametreleri de aktarılacak byte sayısını belirtir. İkinci parametreyle belirtilen adres read fonksiyonu için dosyadan okunacak bilginin yerleştirileceği yerin adresi, write fonksiyonu için ise dosyaya yazılacak bilgilerin bulunduğu yerin adresidir. Okunacak ya da yazılacak byte sayısının size_t ile temsil edildiğine dikkat ediniz. C standartlarını göre size_t derleyiciler tarafından işaretsiz tamsayı türlerinden birine typedef edilen bir tür olmak zorundadır. C derleyicilerin çoğuna size_t türü unsigned int olarak typedef edilmiştir. read ve write fonksiyonları okuyabildikleri ya da yazabildikleri byte sayısı kadar dosya göstericisini ilerletirler. read fonksiyonu başarı durumunda okunan byte sayısına başarısızlık durumunda 1 değerine geri döner. Dosyanın sonuna yaklaştığınız durumda kalan byte sayısından daha fazla okuma yapmak isterseniz, istediğiniz kadar değil kalan miktar kadar okuma yapabilirsiniz. Örneğin dosya göstericisinin gösterdiği yerden dosya sonuna kadar 25 byte bilgi bulunuyor olsun: char buf[100]; ssize_t n;... n = read(fd, buf, 100); burada biz 100 byte okumak istediğimiz halde 25 byte okuyabileceğiz ve read fonksiyonu da 25 değerine geri dönecektir. read fonksiyonu dosyanın sonuna gelmekten dolayı hiçbir değer okuyamazsa 0 değerine geri döner. Yani dosyanın sonuna gelip gelmediğimizi read fonksiyonunun 0 döndürmesinden anlayabiliriz. read ve write fonksiyonlarının geri dönüş değerlerinin ssize_t türünden olduğunu görüyorsunuz. POSIX standartlarına göre bu tür işaretli bir tamsayı türü olarak <sys/types.h> dosyası içerisinde include edilmek zorundadır. ssize_t türü 32 bit sistemlerde genellikle int olarak 64 bit sistemlerde long int olarak typedef edilmiştir. [4] read fonksiyonunun geri dönüş değeri üç durumdan biri olabilir. Eğer fonksiyonun geri dönüş değeri sıfırdan büyükse geri dönüş değeri okunan byte miktarıdır. Yukarıda da belirttiğimiz gibi okuduğunuz miktar okumak istediğiniz miktardan düşük olabilir. Bu durumu bir hata olarak değerlendirmemelisiniz. İkinci durum fonksiyonun sıfır ile geri dönmesidir. Bu durumda dosya sonuna gelindiğinden dolayı hiç okuma yapılamamıştır. Nihayet read bir okuma hatası olduğunda -1 değerine geri döner. Peki read fonksiyonu neden başarısız olabilir? En önemli nedenlerden biri bize bağlı olmayan dosya sistemine ilişkin sorunlardır. Tabi böylesi sorunların çok ender görülebileceğini unutmayalım. read fonksiyonunun başarısız olmasına yol açan belli başlı durumlar şunlardır: 11

12 EBADF : Dosya betimleyicisi geçersiz ya da uygunsuzdur. EINTR : Bir sinyal oluştuğundan dolayı read fonksiyonu başarısız olmuştur. Bu durumda hiçbir okuma yapılmamıştır. EIO : Fiziksel nedenlerden kaynaklanan okuma ya da yazma hatası.... :... read ve write fonksiyonlarının erişim haklarının yetersizliği yüzünden başarısız olamayacağını belirtelim. Çünkü erişim kontrolü read ve write fonksiyonları tarafından değil dosya açılırken open fonksiyonu trafından değerlendirilmektedir. Ancak read ve write fonksiyonları açış modu uygunsuzluğu durumunda başarısız olabilir. Örneğin O_WRONLY moduyla açılmış olan bir dosyadan okuma yapmak istersek read fonksiyonu başarısız olur ve errno değişkeni EBADF değeri ile doldurulur. write fonksiyonu dosyaya yazılan byte sayısına geri döner. Bu sayının normal olarak yazılmak istenen byte sayısı ile aynı olması gerekir. Normal dosyalar için yazılmak istenen byte sayısı ile yazılan byte sayısının aynı olması beklenir. Çünkü normal dosyalara yazma işleminde dosya sonuna gelinmesi gibi bir durum söz konusu olmaz. Dosya göstericisi dosyanın sonundaysa yazılacak olan her şey dosyaya eklenir. Tabi write fonksiyonu yine başarısız olarak -1 değeri ile geri dönebilir. Başarısızlığın nedenini belirten errno değişkeninin alabileceği belli başlı değerler şunlardır: EBADF : Dosya betimleyicisi geçersizdir EINTR : Bir sinyal oluştuğundan dolayı write fonksiyonu başarısız olmuştur. Bu durumda hiçbir okuma yapılmamıştır. EIO : Fiziksel nedenlerden kaynaklanan okuma ya da yazma hatası.... :... write fonksiyonu da açış modunun uygun olmaması nedeniyle başarısız olabilir. Bu durumda errno değişkeni EBADF değeri ile doldurulur. read ve write fonksiyonlarının çalışma biçimini anlmanız için bir dosya kopyalama örneği vermek istiyoruz. 12

13 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #define BUF_SIZE 512 int main(int argc, char *argv[]) { int fdd, fds; char buf[buf_size]; ssize_t n; if (argc!= 3) { fprintf(stderr, "wrong number of arguments!"); exit(exit_failure); } if ((fds = open(argv[1], O_RDONLY)) < 0) { perror("open"); exit(exit_failure); } if ((fdd = open(argv[1], O_WRONLY O_CREAT O_EXCL,S_IRUSR S_IWUSR)) < 0) { perror("open"); exit(exit_failure); } while ((n = read(fds, buf, BUF_SIZE)) > 0) if ((n = write(fdd, buf, n)) < 0) { break; if (n < 0) { perror("read"); exit(exit_failure); } printf("ok...\n"); } return 0; Kaynak dosyanın O_RDONLY, hedef dosyanın ise O_WRONLY O_CREAT O_EXCL modunda açıldığına dikkat ediniz. Döngü içerisinde dosyadan BUF_SIZE kadar bilgi okunmaya çalışılmış, okunabilen miktar hedef dosyaya yazılmıştır. BUF_SIZE değerinin 512 olduğunu görüyorsunuz. Örneğin, 520 byte lık bir dosyayı kopyalamaya çalışalım. read önce 512 ile sonra 8 değeri ile geri dönecektir. Daha sonra read çağrıldığında dosya göstericisi dosyanın sonunda olduğu için read bu kez 0 değeri ile geri dönecek ve böylece döngüden çıkılacaktır. read ve write fonksiyonlarının özel aygıtlardaki kullanımı ve blokesiz modda çalışmasını bu makalede ele almayacağız. 13

14 lseek Fonksiyonu Dosyanın belli bir yerinden okuma ya da yazma yapmak için önce okuyacağımız ya da yazacağımız yere dosya göstericisini konumlandırmamız gerekir. Bu işlem prototipi <unistd.h> içerisinde bulunan lseek fonksiyonuyla yapılmaktadır: off_t lseek(int fildes, off_t offset, int whence); Fonksiyonun birinci parametresi konumlandırmanın yapılacağı dosyaya ilişkin dosya betimleyicisini, ikinci parametresi konumlandırılacak offset değerini belirtir. off_t içerisinde bildirilmiş bir türdür. POSIX standartlarına göre off_t türü işaretli bir tamsayı türü olarak typedef edilmek zorundadır. Örneğin 32 bit sistemlerde tipik olarak long int biçimindedir. Son parametre konumlandırma işleminin nereye göre yapılacağını belirtir. Bu parametre tıpkı fseek fonksiyonunda olduğu gibi SEEK_SET, SEEK_CUR ya da SEEK_END sembolik değerlerinden birini almak zorundadır. Bu sembolik sabitler dosyası içerisinde bildirilmişlerdir. SEEK_SET konumlandırmanın dosyanın başından itibaren yapılacağını belirtir. Bu durumda offset belirten ikinci parametre 0 ya da pozitif bir değerde olmalıdır. SEEK_CUR konumlandırma işleminin dosya göstericisinin gösterdiği yerden itibaren yapılacağını belirtir. Bu durumda offset belirten ikinci parametre 0, pozitif ya da negatif olabilir. Pozitif değer ileriye doğru, negatif değer geriye doğru konumlandırma anlamına gelir. SEEK_END ise konumlandırma işleminin dosyanın sonundan itibaren yapılacağı anlamına gelir. Bu durumda ikinci parametre sıfır ya da negatif olabilir. Sıfır EOF durumunu belirtmektedir. Örneğin:... lseek(fd, 0, SEEK_END); write(fd,...);... işlemi dosyanın sonuna ekleme yapmakta kullanılabilir. lseek fonksiyonu başarı durumunda dosya göstericisinin dosyanın başından itibaren yeni konumunu belirten değerle, başarısızlık durumunda ise -1 değeriyle geri döner. Başarısızlık durumunda errno değişkeninin aldığı tipik değerler şunlardır: EBADF : Dosya betimleyicisi geçersizdir EINVAL : Fonksiyonun üçüncü parametresi SEEK_SET, SEEK_CUR ya da SEEK_END değerlerinin dışında bir değer almıştır.... :... lseek fonksiyonun prototipi dosyasındadır. Dosya göstericisinin read ve write fonksiyonları tarafından yazılan ya da okunan byte sayısı kadar otomatik olarak ilerletildiğini bir kez daha anımsatalım. 14

15 [1] Aslında test işlemine gerçek kullanıcı id'si (real user id) ve gerçek grup id'si (real group id) değil etkin kullanıcı id'si (effective user id) ve etkin grup id'si (effective group id) girmektedir. Ancak biz bu makalede kapsamı genişletmemek için bu iki id arasındaki farklılığa değinmiyoruz. [2] O_RDONLY ile O_WRONLY bayraklarını O_RDONLY O_WRONLY biçiminde birleştirerek O_RDWR bayrağının elde edileceğinin bir garantisi yoktur. Erişim bayraklarından yalnızca birini kullanabileceğinizi bir kez daha anımsatmak istiyoruz. O_RDONLY O_WRONLY belirlemesi geçersiz kabul edilmektedir. Dosyayı hem okuma hem de yazma amaçlı açmak için O_RDWR bayrağının kullanılması gerekir. [3] C de ve C++ ta fonksiyon parametresi olarak... (ellipsis) kullanılırsa bu durum fonksiyonun istenildiği kadar parametre ile çağrılabileceği anlamına gelir. Böyle fonksiyonlara değişken sayıda parametre alan fonksiyonlar denilmektedir. Değişken sayıda parametre alan fonksiyonların en azından bir tane normal parametresi olması ve... belirlemesinin de son parametre değişkeninde kullanılması zorunludur. Değişken sayıda parametre alan fonksiyonların kuşkusuz en ünlüsü printf ve scanf fonksiyonlarıdır. printf fonksiyonunun prototipi size iyi bir fikir verecektir: int printf(const char *format,...); Fonksiyon en az bir parametreyle çağrılmak zorundadır. [4] read ve write fonksiyonlarının geri dönüş değerinin işaretli tamsayı türünden olmasının nedeni başarısızlığı ifade edebilmek içindir. 32 bit sistemlerin hemen hepsinde int türü ile long türünün her ikisi de 32 bit uzunluğundadır. 64 bit sistemlerde ise int türü 32 bitte tutulurken long türü 64 bite çekilmiştir. 32 bit sistemlerdeki read fonksiyonunun uzunluk parametresi ile geri dönüş değeri size uyumsuz gelebilir. Gerçekten fonksiyonun uzunluk parametresi e kadar değer alabildiği halde geri dönüş değeri kadar değer alabilir. Bu durumda 32 bit sistemlerde biz uzunluk parametresini değerinden daha yüksek vermemeliyiz. Yoksa fonksiyon okunan değeri geri dönüş değeri olarak yansıtamaz. Eskiden UNIX sistemlerinde fonksiyonun uzunluk parametresiyle geri dönüş değeri uyumlu olacak biçimde (her ikisi de int türden) alınırdı. Daha sonra bu tutum değiştirildi. 15

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI 10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI İkincil bellekte tanımlanmış bölgelere dosya denir. Her dosyanın bir ismi vardır. Ancak dosyaların isimlendirme kuralları sistemden sisteme göre değişebilmektedir. Dosya

Detaylı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 DOSYALAMA Sunu Planı Rasgele Erişim (Random Access) Dosyaları Rasgele Erişim Dosyalarına Veri Yazma Rasgele Erişim Dosyalarından Veri Okuma 1 Sıralı Erişim Dosyası Bir

Detaylı

UNIX/Linux ve Windows Sistemlerinde Dosyaların ve Dizinlerin Silinmesi

UNIX/Linux ve Windows Sistemlerinde Dosyaların ve Dizinlerin Silinmesi UNIX/Linux ve Windows Sistemlerinde Dosyaların ve Dizinlerin Silinmesi Kaan Aslan 23 Temuz 2007 UNIX/Linux sistemlerinde bir dosyanın katı bağ sayısı 1 ise dosyayı tek bir dizin girişi göstermektedir.

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Dosya İşlemleri (Rastgele Erişim)

Detaylı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 DOSYALAMA Sunu Planı Veri Hiyerarşisi Dosyalar ve Akımlar(streams) Sıralı Erişim (Sequential Access) dosyalarının oluşturulması Sıralı Erişim Dosyalarından Veri Okuma Rasgele

Detaylı

Temel Bilgisayar Programlama

Temel Bilgisayar Programlama BÖLÜM 11: : Birçok programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. Bütün programlama dillerinde, sabit disk sürücüsü (Hard Disk Drive, HDD) üzerindeki verileri okumak veya diske veri

Detaylı

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden

Detaylı

Temel Dosya İşlemleri. Kütük Organizasyonu 1

Temel Dosya İşlemleri. Kütük Organizasyonu 1 Temel Dosya İşlemleri Kütük Organizasyonu 1 Dosyaların Temel İşlemleri Bilgiler dosyada belirli bir düzen içerisinde yer alırlar Örn: ALAN THARP 100 100 100 JOHN BISHOP 70 80 75 PAUL AUSTER Bir satırda

Detaylı

Proses. Prosesler 2. İşletim Sistemleri

Proses. Prosesler 2. İşletim Sistemleri 2 PROSESLER Proses Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkinbirdenfazlaprosesolabilir. Görev

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Veri Hiyerarşisi Dosyalara Giriş

Detaylı

PROSESLER. Proses. Proses

PROSESLER. Proses. Proses Proses 2 PROSESLER Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkin birden fazla proses olabilir.

Detaylı

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2; Dosya İşlemleri Nedir? Programlarınızı girdi (input) olarak aldığı verileri bir text dosyasında yada word dosyasında vb. saklamasıdır. Artık C programınızın yaratıp içine veriler koyacağı text dosyasını

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 18.04.2011 1 DİSK DOSYALARI İLE ÇALIŞMA DOSYALARIN AÇILMASI C programlama dilinde bir dosyayı kullanabilmek için, öncelikle o dosyanın açılması gerekmektedir. Hem okuma hem de yazma

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)

Detaylı

DOSYA İŞLEMLERİ Programlama dilleri hafta -

DOSYA İŞLEMLERİ Programlama dilleri hafta - BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DOSYA İŞLEMLERİ Programlama dilleri 1-10. hafta - Araş. Gör. Nesibe YALÇIN Dosya İşlemleri Programın çalışma esnasında

Detaylı

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya BMB1002 Bilgisayar Programlamaya Giriş Dosyalar Prof. Dr. Necmettin Kaya Dosyalar, verilen saklanması ve daha sonra okunması için bilgi içeren ve kalıcı olarak saklanabilen ortamlardır. Dosya işlemleri,

Detaylı

Eln 1002 Bilgisayar Programlama II

Eln 1002 Bilgisayar Programlama II Eln 1002 Bilgisayar Programlama II C»de Dosya ğşleme : S¹ral¹ EriŞim Ne ÖĆreneceĆiz? Dosyalar ve Streamler Sequential (sıralı) erişim dosyaların yaratılması Sıralı Erişim Dosyalarından Veri Okuma Sıralı

Detaylı

Dosyaların Özellikleri (Attribute) Dosya İşlemleri. İki Seviyeli Katalog Sistemleri. Tek Seviyeli Katalog Sistemleri. Hiyerarşik Katalog Sistemleri

Dosyaların Özellikleri (Attribute) Dosya İşlemleri. İki Seviyeli Katalog Sistemleri. Tek Seviyeli Katalog Sistemleri. Hiyerarşik Katalog Sistemleri Bilgilerin Uzun Vadeli Saklanması 8 DOSYA SİSTEMS STEMİ saklanacak veriler çok fazla olabilir veriler proses sonlandıktan sonra da kaybolmamalı bilgiye prosesler ortak olarak ulaşabilmeli 424 Dosya Sistemi

Detaylı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA BLM-112 PROGRAMLAMA DİLLERİ II Ders-8 Dosya İşlemleri-1 Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Giriş Değişken ve dizilerde tutulan değerler programın çalışması

Detaylı

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1 Programlama Dilleri C Dili Programlama Dilleri-ders08/ 1 Yapısal Veri Tipleri C dili genişletilebilen bir dildir. Var olan veri tipleri kullanılarak yeni veri tipleri tanımlanıp kullanılabilir. Programlama

Detaylı

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Dosyalama İşlemleri. Ders Notları

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Dosyalama İşlemleri. Ders Notları 1 Anadolu Üniversitesi Endüstri Mühendisliği Bölümü Dosyalama İşlemleri Visual Basic 6.0 Ders Notları Kaynak: İhsan Karagülle, Zeydin Pala, Visual Basic 6.0, Türkmen Kitabevi, 1999, Beyazıt İstanbul, 2

Detaylı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı Internet Programming II Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 23 May. 2016 PHP Dosya İşlemleri Form yolu ile kullanıcıdan alınan bilgilerin veri tabanı yerine

Detaylı

LİNUX. Dosyalar ve dizinler

LİNUX. Dosyalar ve dizinler LİNUX Dosyalar ve dizinler Dosya sistemi Linux işletim sisteminde de dosya ve dizinler diğer Unix türevi işletim sistemlerinde olduğu gibi hiyerarşik yapıya sahiptir. En üst düzeyde olan kök dizini olarak

Detaylı

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler Programlama Dilleri 1 Ders 12: Belirleyiciler ve Niteleyiciler Genel Bakış Giriş Yer Belirleyicilerle Bildirim İşlemi auto Belirleyicisi register Belirleyicisi static Belirleyicisi Statik ve Global Değişkenlerin

Detaylı

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü Metin Dosyaları Metin dosyaları, verileri bir kere hazırlayıp, ikincil saklama

Detaylı

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar: Dosyalama Çoğu programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. C programlama dilinde, disk dosyasına erişme (okuma ve yazma için) iki farklı yöntemle yapılır. Bunlar üst düzey ve alt

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

Sınav tarihi : Süre : 60 dak.

Sınav tarihi : Süre : 60 dak. Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 31.05.2016 Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =

Detaylı

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir. DİZGİLER (STRINGS) Dizgiler char tipli karakterlerin gruplanmş haline dizgi(string) denilir. Bazen katar ismide kullanılabilir. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir.

Detaylı

Bilgilerin Uzun Vadeli Saklanması

Bilgilerin Uzun Vadeli Saklanması 8 DOSYA SİSTEMS STEMİ Bilgilerin Uzun Vadeli Saklanması saklanacak veriler çok fazla olabilir veriler proses sonlandıktan sonra da kaybolmamalı bilgiye prosesler ortak olarak ulaşabilmeli 424 Dosya Sistemi

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.

Detaylı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü Final Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :09.01.2013, 60 dak. Dikkat!!! Soru kitapçığında ve

Detaylı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya

Detaylı

Eln 1001 Bilgisayar Programlama I

Eln 1001 Bilgisayar Programlama I Eln 1001 Bilgisayar Programlama I GiriŞ / ǹk¹Ş Fonksiyonlar¹ Ne ÖĆreneceĆiz? Temel Giriş/Çıkış Yapısı Giriş Fonksiyonları Karakterler için giriş fonksiyonları Scanf fonksiyonu Formatlı giriş Çıkış Fonksiyonları

Detaylı

BLG 312 Bilgisayar İşletim Sistemleri 2006 BLG 312. Bilgilerin Uzun Vadeli Saklanması. Dosya Sistemi Görevleri. Dosya Sistemi Özellikleri

BLG 312 Bilgisayar İşletim Sistemleri 2006 BLG 312. Bilgilerin Uzun Vadeli Saklanması. Dosya Sistemi Görevleri. Dosya Sistemi Özellikleri Bilgilerin Uzun Vadeli Saklanması Bilgisayar İşletim Sistemleri BLG 312 Dosya Sistemi saklanacak veriler çok fazla olabilir veriler proses sonlandıktan sonra da kaybolmamalı bilgiye prosesler ortak olarak

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN GİRİŞ Değişken ve dizilerde tutulan değerler programın çalışması esnasında değerlerini korurlarken programın çalışması sona erdiğinde veri kaybolur. Dosyalar verinin kalıcı olarak

Detaylı

İşletim Sistemleri. Dr. Binnur Kurt binnur.kurt@gmail.com. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri

İşletim Sistemleri. Dr. Binnur Kurt binnur.kurt@gmail.com. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com Omega Eğitim ve Danışmanlık http://www.omegaegitim.com 1 S a y f a İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. İplikler 5. İplikler

Detaylı

Temel Giriş/Çıkış Fonksiyonları

Temel Giriş/Çıkış Fonksiyonları Temel Giriş/Çıkış Fonksiyonları Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri BLM-111 PROGRAMLAMA DİLLERİ I Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Temel Veri Tipleri C dilinde

Detaylı

C nin Stantart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması

C nin Stantart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması C nin Stantart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması Kaan Aslan 16 Temmuz 2003 Standart C fonksiyonlarını kullanmadan bir dosyanın her byte ı üzerinde sırasıyla işlem yapmak isteyelim.

Detaylı

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"

Detaylı

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200)

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200) 2012 Mifare Kart Yazıcı/Okuyucu Modül (MFM-200) İstanbul Yazılım ve Elektronik Teknolojileri 01.01.2012 MFM-200 Mifare Kart Yazıcı/Okuyucu Modül Genel Özellikler Ürün Kodu MFM-200 Protokol ISO14443A, ISO15693

Detaylı

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :13.04.2017 60 dak. Dikkat!!! Soru kitapçığında ve cevap

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Dosya İşlemleri ASCII Tablosu ve

Detaylı

UNIX/Linux Sistemlerinde Boru Haberleşmeleri

UNIX/Linux Sistemlerinde Boru Haberleşmeleri UNIX/Linux Sistemlerinde Boru Haberleşmeleri Boru haberleşmeleri yalınlığından dolayı en çok tercih edilen prosesler arası haberleşme yöntemlerindendir. Yöntem kendi içerisinde eş zamanlılığı da barındırdığından

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini

Detaylı

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf Giriş GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI printf Fonksiyonu scanf Fonksiyonu Verilerin kaybolmaması için hafızada değişkenler içine yerleştirilmeleri gerekir. Bu veriler iki şekilde yerleştirilebilir. Değişkene

Detaylı

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur. Dosya Sistemi ve Çalışma Mantığı Dosya Sistemi Disk üzerindeki dosyaların düzenlenmesini ve bir işletim sisteminde dosyaların izlerinin bulunmasını sağlayan yapıya Dosya Sistemi (File System) denir. Linux

Detaylı

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1 Programlama Dilleri C Dili Programlama Dilleri-ders02/ 1 Değişkenler, Sabitler ve Operatörler Değişkenler (variables) bellekte bilginin saklandığı gözlere verilen simgesel isimlerdir. Sabitler (constants)

Detaylı

UNIX/Linux Sistemlerinde exec İşlemleri

UNIX/Linux Sistemlerinde exec İşlemleri UNIX/Linux Sistemlerinde exec İşlemleri Kaan Aslan 10 Temmuz 2008 UNIX/Linux sistemlerinde fork fonksiyonu prosesin yeni ve özdeş bir kopyasını oluşturmaktadır. Yani fork işlemi sonrasında alt ve üst prosesler

Detaylı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar Değer Döndüren Fonksiyonlar Çok Parametreli Fonksiyonlar Değişken Kapsamları Çok Fonksiyonlu Programlar Fonksiyon Tanımı Karmaşıkveuzunprogramları,

Detaylı

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir. MATRİS TRANSPOZU: Bir matrisin satırlarını sütun, sütunlarınıda satır yaparak elde edilen matrise transpoz matris denilir. Diğer bir değişle, eğer A matrisi aşağıdaki gibi tanımlandıysa bu matrisin transpoz

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

8. İŞARETCİLER (POINTERS)

8. İŞARETCİLER (POINTERS) 8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren

Detaylı

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları Kocaeli Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : 11.04.2018, 50 dak. Dikkat!!! Soru kitapçığında ve cevap

Detaylı

Unix/Linux Sistem Programlama Ders Notları

Unix/Linux Sistem Programlama Ders Notları Unix/Linux Sistem Programlama Ders Notları CSD 2002 Bu notlar C ve Sistem Programcıları Derneği'nin düzenlediği, Kaan Aslan tarafından açılmış olan Unix/Linux Sistem Programlama kursunda derste tutulan

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir: Gereksiz Kodlar Kaan Aslan 9 Temuz 1997 Kapalı spor salonu, durak yeri, taşıt aracı, en optimum, geri iade etmek, davranış biçimi Bu ifadelerde bir gariplik var, değil mi? Açık spor salonu göreniniz var

Detaylı

Unix/Linux Sistem Programlama Ders Notları

Unix/Linux Sistem Programlama Ders Notları Unix/Linux Sistem Programlama Ders Notları CSD 2002 Bu notlar C ve Sistem Programcıları Derneği'nin düzenlediği, Kaan Aslan tarafından açılmış olan Unix/Linux Sistem Programlama kursunda derste tutulan

Detaylı

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Nisan 2009 9031150 - Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Referans: Bugün: 1. Ders Notları. Ders #4.1 Tekrar Dowhile ve for döngüleri Diziler Göstergeler 1. Tekrar for döngüleri Genel yazılımı

Detaylı

Linux altında komut satırında...

Linux altında komut satırında... -Kabuk (Shell) Unix ve benzeri işletim sistemlerinde kullanıcının komut yazmasını sağlayan, bu komutları yorumlayarak gerekli işlemleri yapan programlara kabuk (shell) adı verilir. Linux da bir kullanıcı

Detaylı

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş Özlem AYDIN NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü C DİLİNİN BİR ÜST-KÜMESİ OLARAK C++ Genel olarak, C de mevcut olan her şey C++ da da vardır. C dilinde

Detaylı

Girdi Çıktı İşlemleri

Girdi Çıktı İşlemleri Girdi Çıktı İşlemleri Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları *Kaynakça bölümünde verilen kaynaklardan derlenmiştir. Ekrandan Okuma ve Ekrana Yazma Python'da ekrandan okuma için

Detaylı

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.

Detaylı

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Esnek Argümanlı Fonksiyonlar main() Fonksiyonuna Parametre Aktarımı

Detaylı

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır: C VERİ TÜRLERİ BASİT VERİ TÜRLERİ Değişkenler, program içinde üzerinde işlem yapılan, veri saklanan ve durumlarına göre programın akışı sağlanan nesnelerdir. C de bir değişken kullanılmadan önce tanımlanmalıdır.

Detaylı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı

Detaylı

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Konular Giriş Data Hiyerarşisi Files (Dosyalar) ve Streams (Kaynaklar)

Detaylı

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 13.04.2015 Süre : 60 dak. 1. Hangisi gerçek sayı değişmezi değildir?

Detaylı

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır. DOSYALAMALAR Programlama bilgilerin her zaman ekrana yazdırılması veya değişkenlerde tutulması yeterli olmayabilir. Programın çalışması sonucu girilen yada hesaplanan her bilgi manyetik ortama programda

Detaylı

C Programlama printf() Fonksiyonu

C Programlama printf() Fonksiyonu C Programlama printf() Fonksiyonu Standart C kütüphanesinin bir parçası olan printf() C Programlama Dili'nin genel amaçlı çıktı alma fonksiyonudur. Girdi ve çıktı deyimleri gerçekte C dilinin bir parçası

Detaylı

Diziler (Arrays) Çok Boyutlu Diziler

Diziler (Arrays) Çok Boyutlu Diziler Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.

Detaylı

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak. Selçuk Üniversitesi Mühendislik-Mimarlık Fakültesi Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :26.11.2012, 60 dak. Dikkat!!! Soru kitapçığında

Detaylı

PROGRAMLAMA. Dosyalama İşlemleri. Yrd. Doç. Dr. Bülent Çobanoğlu. Sakarya Üniversitesi Mekatronik Mühendisliği. Yrd.Doç.Dr.

PROGRAMLAMA. Dosyalama İşlemleri. Yrd. Doç. Dr. Bülent Çobanoğlu. Sakarya Üniversitesi Mekatronik Mühendisliği. Yrd.Doç.Dr. PROGRAMLAMA Dosyalama İşlemleri Yrd. Doç. Dr. Bülent Çobanoğlu Sakarya Üniversitesi Mekatronik Mühendisliği Yrd.Doç. Dosyalama İşlemleri Program ve verileri daha sonra kullanabilmek amacı ile kalıcı olarak

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers) 5. İşaretç iler (pointers) C dilinin öyle bir özelliği vardır ki, programlama dilleri arasında kendisini diğerlerinden ayıran bir fark olarak sunulur: işaretçiler. Aslında, bazı diğer dillerde de direkt

Detaylı

Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos

Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos Yardım Komutları Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos Yardım Komutları man komut Parametre olarak aldığı komut hakkında bilgiyi ekranda

Detaylı

Hafta 12 Karakter Tutan Diziler

Hafta 12 Karakter Tutan Diziler BLM111 Programlama Dilleri I Hafta 12 Karakter Tutan Diziler Yrd. Doç. Dr. Caner ÖZCAN Katar (String) Tanımlama Dizileri ve çok boyutlu dizileri gördük. Katar dediğimiz şey de aslında bir dizidir. Değişken

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Kodlarına Yorum Satırı Eklemek Java Paket Kavramı Java Kütüphane Kavramı Konsoldan Veri Çıkışı ve JOPtionPane Kütüphanesi JOptionPane Kütüphanesi Kullanarak

Detaylı

İşletim Sistemi. BTEP205 - İşletim Sistemleri

İşletim Sistemi. BTEP205 - İşletim Sistemleri İşletim Sistemi 2 İşletim sistemi (Operating System-OS), bilgisayar kullanıcısı ile bilgisayarı oluşturan donanım arasındaki iletişimi sağlayan ve uygulama programlarını çalıştırmaktan sorumlu olan sistem

Detaylı

Dosya/Dizin İzinleri. Okuma (r) Yazma (w) Çalıştırma (x) Dosya içeriğini görebilir mi? (Klasörler için) dosya listesini alabilir mi?

Dosya/Dizin İzinleri. Okuma (r) Yazma (w) Çalıştırma (x) Dosya içeriğini görebilir mi? (Klasörler için) dosya listesini alabilir mi? Dosya/Dizin İzinleri Linux te temel dosya sistemi güvenliği kullanıcıların dosya ve dizinler üzerindeki erişim izinlerinin belirlenmesiyle sağlanır. Bir dosya veya dizinlere ait 3 tür izin vardır: - Dosya

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler: Veri Yapıları Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz İçindekiler: Giriş Temel Veri Yapıları Tanımlamalı Veri Yapıları Veri Modeli ve Türleri

Detaylı

C Programlama Dilinde Değişkenler

C Programlama Dilinde Değişkenler C Programlama Dilinde Değişkenler Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DİNAMİK BELLEK YÖNETİMİ TEMEL G/Ç FONKSİYONLARI Dinamik Bellek Tahsisi Tanımlanmış olan dizilere eleman sayısı ve elemanlarının tiplerine göre, sistem belleğinde bir yer

Detaylı

$ echo $PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin: /usr/local/sbin:/usr/local/bin:/usr/games:.

$ echo $PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin: /usr/local/sbin:/usr/local/bin:/usr/games:. Dosyaları bulmak Linux sistemleri içlerinde yüzlerce dosya barındırmaktadır. Her ne kadar bu dosyaların yerlerini kaybetmeyecek kadar usta olsanız bile, büyük bir ihtimalle bir tanesini bulmak için ara

Detaylı

BTEP243 Ders 3. class Yazım Kuralı:

BTEP243 Ders 3. class Yazım Kuralı: BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin

Detaylı

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

İnternet Programcılığı Öğr. Gör. Serkan AKSU  PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler PHP de Dizi-Değişkenler, Nesneler Dizilerle ilgili örneklere geçmeden önce aşağıdaki tabloyu inceleyelim. Tabloda dizi kavramının mantığı açıklanmaktadır. Tablonun tamamını bir dizi olarak düşünün ve bu

Detaylı

BİL1001 Bilgisayar Bilimlerine Giriş 1

BİL1001 Bilgisayar Bilimlerine Giriş 1 DEÜ Bilgisayar Bilimleri Bölümü BİL1001 Bilgisayar Bilimlerine Giriş 1 Öğr. Gör. Dr. Alper VAHAPLAR 2017 Yaz Okulu Tekrarlı Yapılar Algoritmanın belirli bir kısmının, belirli kere ya da belirli durumlar

Detaylı

C Dosyalama. Öğr. Gör. M. Ozan AKI. Rev 1.0

C Dosyalama. Öğr. Gör. M. Ozan AKI. Rev 1.0 C Dosyalama Öğr. Gör. M. Ozan AKI Rev 1.0 Dosyalama Dosyalar, disk üzerinde verilerin kalıcı olarak saklanmasını ve başka bir ortama kopyalanarak taşınabilmesini sağlayan yapılardır. Dosyalama C Dili ve

Detaylı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I DİZİLER (ARRAYS) Kullanıcıdan N tane tamsayı, xi, alalım ve 1. Bu sayıların ortalamasını hesaplamak isteyelim ort = 0; for (i=0; i

Detaylı