POSIX sistemlerinde bir dosyanın aynı anda çok sayıda ismi olabilir. İsimlerin her biri aynı değerdedir ve biri diğerine tercih edilmez.
Bir dosyaya isim eklemek için link işlevi kullanılır. (Bu yeni isme ayrıca dosyaya sabit bağ da denir.) Bir dosyaya yeni bir isim atanması dosya içeriğinin kopyalanmasına sebep olmaz; sadece dosyanın isimlerine yeni bir isim eklenmiş olur.
Bir dosya çeşitli dizinlerde isimlere sahip olabilir, böyle bir dosya sisteminin düzeni kesin bir hiyerarşi ya da ağaç olmaz.
Çoğu gerçeklemelerde, aynı dosyanın farklı dosya sistemlerinde sabit bağlarının olmasına izin verilmez. link işlevini böyle bir işlem yapmak için kullanmaya çalışırsanız, diğer dosya sistemi için bu işlemin yapılamayacağını belirten bir hata raporu alırsınız.
link işlevinin prototipi
unistd.h başlık dosysında bildirilmiştir.
int link | (const char *eski-isim,
const char *yeni-isim) |
işlev
link işlevi eski-isim isimli dosyaya yeni-isim isimli bir sabit bağ yapar.
İşlev başarılı olduğunda
0, aksi takdirde
-1 ile döner.
Dosya ismi hatalarına ek olarak aşağıdaki
errno hata durumları bu işlev için tanımlanmıştır:
- EACCES
Yeni bağın yazılacağı dizine yazma izni verilmedi.
- EEXIST
yeni-isim isminde bir dosya zaten var. Bu ismi yeni bağ ismi olarak kullanmak istiyorsanız önce mevcut ismi değiştirmelisiniz.
- EMLINK
- ENOENT
eski-isim isminde bir dosya yok. Olmayan bir dosyaya bağ oluşturamazsınız.
- ENOSPC
Yeni bağı içerecek dizin ya da dosya sisteminde yer yok ve genişletilemiyor.
- EPERM
GNU sisteminde ve bazı sistemlerde dizinlere sabit bağ yapamazsınız. Bir çok sistem bu izni sadece ayrıcalıklı kullanıcılara verir. Bu hata sorunu raporlamakta kullanılır.
- EROFS
Yeni bağı içerecek dizine dosya sistemi salt-okunur bağlı olduğundan yazılamıyor.
- EXDEV
yeni-isim ile belirtilen dizin mevcut dosyadan farklı bir dosya sisteminde.
- EIO
Diske okuma ya da yazma denemesi sırasında bir donanım hatası oluştu.