Yanıtlar:
Bu , tüm standart dosya adlarının en fazla 6 karakter uzunluğunda (düşünen ) olduğu Unix'in ilk basımına kadar uzanıyor ( passwd
bu sürüm bir dosya adında 8 karakter boğmaca) desteklese de . Çoğu komutun .c
(örneğin umount.c
) biten , temel ad için sadece 6 karakter bırakan bir ilişkili kaynak dosyası vardı .
6 karakterlik bir sınırlama, daha önceki bir geliştirme sürümünden bir sahip olabilir veya 6 karakterlik bir sınırlamaya sahip olan mevcut bir IBM sisteminden miras kalmış olabilir. (Erken C uygulamaları tanımlayıcıları üzerinde 6 karakterlik sınırı vardı - uzun tanımlayıcıları kabul ama derleyici yalnızca bu yüzden, ilk 6 karakterden da inceleniyor foobar1
ve foobar2
. Aynı değişken idi)
( umount
Yazımı bilinmeyen bir hata olarak listeleyen bir adam sayfasını hatırladığımı sanıyordum , ancak şimdi bulamıyorum.)
directory
, ki henüz uymayacaktı). Bu yüzden neden passwd
6 karaktere kısaltıldığını merak ediyorum ( passwd
henüz bir komut da yoktu /etc/passwd
).
urandom
Bir süredir burada oturup yanlış bilgiler varmış gibi görünüyor.
En olası nedeni umount
o kullandığı sistem çağrısının adından izlediğinden kısaltılmış ismi olan komutu geçerli: umount()
.
İsmi sahip "unmount" sistem çağrısının muhtemel nedeni, umount()
erken linkerlerin harici tanımlayıcıların uzunluğunu bazı sistemlerde 6 karaktere kadar (sadece tek bir durumda) sınırlandırmasıdır (ve bu araçlarla uyumluluğu korumak mantıklıdır). zamanda) ve "umount", "unmount" için kısaltmanın mantıksal bir şeklidir. Yayınlanma sırasında çeşitli ilgili sistemlerin harici tanımlayıcı özelliklerinin bir listesi için C Programlama Dilinin ilk baskısının 179. sayfasına bakınız .
Ayrıca erken C derleyicilerinin bir tanımlayıcının ilk 8 karakterini anlamlı olarak kabul ettiğini, ancak tanımlayıcıların daha uzun olmasına izin verdiğini unutmayın. (K&R sayfa 33)
Sembol tabloları tanımlayıcılar uzunluğu vardır unutmayın hiçbir şey , V1 beri en azından Unix (Unix sembol tabloları içinde, dosya adı uzunluğu ile direkt olarak yapmak olursa olsun o V1 kılavuzunda belirtildiği olsa, tanımlayıcılar için 8 karakterden olduğu montajcı " en fazla 7 baytlık semboller üretir " ).
Aynı nedenle creat
sistem çağrısı yazılmıyor create
mu?
.c
(veya.s
) extension = 8 karakter dosya adı sınırı.