Bir dosya için bir dizi sabit bağlantı sınırı var mı? Herhangi bir yerde belirtilmiş mi? Linux için güvenli sınırlar nelerdir? Peki ya diğer POSIX sistemleri için?
Bir dosya için bir dizi sabit bağlantı sınırı var mı? Herhangi bir yerde belirtilmiş mi? Linux için güvenli sınırlar nelerdir? Peki ya diğer POSIX sistemleri için?
Yanıtlar:
Posix, işletim sisteminin sabit linkler kavramını anlamasını gerektirir, ancak sabit linklerin aslında herhangi bir özel durumda kullanılamayacağını gerektirir. Belirli bir yerde kaç tane sabit bağlantıya izin verildiğini (bu dosya sistemi türüne göre değişebilir) arayarak öğrenebilirsiniz . Minimum sınır ( ) 8, ama bu kadar oldukça anlamsız zaten birçok hataları bildirebilirsiniz (izin disk dolu, inkar, ...).pathconf(filename, _PC_LINK_MAX)
_POSIX_LINK_MAX
link()
stat
Yapı mağazaları bağlantı türünde bir alanda saymak nlink_t
Bu alanın tipi sisteminizde bir üst limit verir, böylece. Fakat o ana kadar asla ulaşamayacağınız için iyi bir şans var: 32-bit'in sık olması nlink_t
birçok dosya sisteminde yalnızca 16 bit olması (Linux kaynağındaki hızlı bir grep, [234], NTFS, UFS ve XFS, çekirdek veri yapılarında 16 bitlik bağlantı sayıları kullanır).
Bu dosya sistemine bağlıdır.
ext2 / 3/4 sınırı 65k bağlantıdır
ext4 kaynak satırı 643, struct ext4_inode
->__le16 i_links_count
Bağlantı sayısının 16 bitlik bir sayı olduğunu listeleyen linux çekirdek kaynaklarındaki (* include / linux / ext3_fs.h *) ext3 inode yapısı disk biçimine bakıldığında
struct ext3_inode {
... snip ...
__le16 i_links_count; /* Links count */
}
Bunun bir ext3 dosya sisteminin 65535 bağlantıya sahip olabileceği anlamına geliyor.
Diğer dosya sistemlerinin değerlerini kontrol etmedim.