open işlevi, dosyaismi isimli dosya için bir dosya tanıtıcı oluşturur ve bunu döndürür. İlk olarak dosya konum göstergesi dosyanın başlangıcındadır. kip argümanı sadece dosya oluşturulurken kullanılır, ancak herhangi bir durumda argümanın bir zararı yoktur.
seçenekler argümanı dosyanın nasıl açılacağını belirler. Bu bir bit maskesidir ve ilgili parametreleri bit bit veyalayarak (C'de
| işleci ile) değer oluşturabilirsiniz. Kullanılabilecek parametreleri
Dosya Durum Seçenekleri bölümünde bulabilirsiniz.
open işlevinin normal dönüş değeri negatif olmayan bir tamsayı olarak dosya tanıtıcısıdır. Bir hata durumunda
-1 değeri döner. Olağan
dosya ismi hatalarına ek olarak aşağıdaki
errno hata durumları bu işlev için tanımlanmıştır:
- EACCES
Dosya var ancak seçenekler argümanında istendiği gibi okunabilir/yazılabilir değil; dosya yok, dizine de yazılamadığından dosya oluşturulamıyor.
- EEXIST
O_CREAT ve O_EXCL ikisi de belirtilmiş ve isimli dosya zaten var.
- EINTR
- EISDIR
seçenekler argümanında yazma erişimi belirtilmiş ve dosya bir dizin.
- EMFILE
Sürecin çok fazla açık dosyası var. Dosya tanıtıcılarının azami sayısı
RLIMIT_NOFILE özkaynak sınırı tarafından denetlenir; bkz.
Özkaynak Kullanımın Sınırlanması.
- ENFILE
Dizini içeren sistemin tamamı ya da muhtemelen dosya sistemi, bu anda hiçbir ek açık dosyayı destekleyemiyor. (Böyle bir sorun GNU sisteminde asla olmaz.)
- ENOENT
İsimli dosya yok ve O_CREAT belirtilmemiş.
- ENOSPC
Yeni dosyayı içerecek dizin ya da dosya sistemi genişletilemiyor çünkü diskte yer yok.
- ENXIO
O_NONBLOCK ve O_WRONLY ikisi de seçenekler argümanında belirtilmiş ve okumak için dosya açmış bir süreç yok.
- EROFS
Dosya bir salt okunur dosya istemi üzerinde ve seçenekler argümanında O_WRONLY, O_RDWR ve O_TRUNC'dan biri belirtilmiş; veya O_CREAT belirtilmiş ve dosya mevcut değil.
Bir 32 bitlik makinede kaynaklar _FILE_OFFSET_BITS == 64 ile dönüştürülürse, open işlevi, 2^63 baytlık ve -2^63 ile 2^63 arasındaki konum sınırlı dosyalarda kullanılan dosya işleme işlevlerini etkinleştiren büyük dosya kipinde açılmış bir dosya tanıtıcı ile döner. Bu, tüm düşük seviyeli dosya işleme işlevleri büyük dosya kipindeki eşdeğerleri ile değiştirilerek kullanıcı bakımından şeffaf olarak yapılır.
Bu işlev çok evreli yazılımlarda bir iptal noktasıdır. open çağrısı sırasında evre bazı özkaynakları (bellek, dosya tanıtıcı, semafor, vb.) ayırdığında bu bir sorun olur. Evre tam bu anda bir iptal alırsa ayrılan özkaynaklar yazılım sonlanana kadar ayrılmış olarak kalır. Bu tür open çağrılarından kaçınmak için iptal eylemcileri kullanılarak korunulmalıdır.
open işlevi, akımları oluşturan fopen ve freopen işlevlerinin düşük seviyedeki karşılığıdır.