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 ( passwdbu 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 foobar1ve foobar2. Aynı değişken idi)
( umountYazı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 passwd6 karaktere kısaltıldığını merak ediyorum ( passwdhenüz bir komut da yoktu /etc/passwd).
urandom
Bir süredir burada oturup yanlış bilgiler varmış gibi görünüyor.
En olası nedeni umounto 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 creatsistem çağrısı yazılmıyor createmu?
.c(veya.s) extension = 8 karakter dosya adı sınırı.