Birçok cihazda, ana işlemler bilgisayardan çevre birimine bayt göndermek veya bilgisayardaki çevre biriminden bayt almaktır. Bu tür cihazlar borulara benzer ve karakter cihazları gibi iyi çalışırlar . Okuma ve yazmayan işlemler için (seri hattaki akış kontrolü gibi), cihaz, ioctl adı verilen geçici komutlar sunar .
Bazı aygıtlar normal dosyalara çok benzer: sınırlı sayıda bayttan oluşur ve belirli bir konumda yazdıklarınız daha sonra aynı konumdan okunabilir. Bu cihazlara blok cihaz denir .
Ağ arayüzleri daha karmaşık: okudukları ve yazdıkları şey bayt değil paket. Her zamanki arayüzü read
ve ile kullanmak hala mümkün write
olsa da, garip olurdu: muhtemelen her çağrı write
bir paket gönderir ve her çağrı read
bir paket alır (ve tampon paketin sığmayacak kadar küçükse) paket kaybolur).
Ağ arayüzleri sadece cihaz sağlayanlar olarak mevcut olabilir ioctl
. Aslında, bazı unix varyantlarının yaptığı, fakat Linux'un olmadığı şeydir. Bu yaklaşımın bir avantajı var; örneğin, Linux'ta ağ arayüzleri udev'i kaldırabilirdi . Ancak avantajlar sınırlıdır, bu yüzden yapılmamıştır.
Ağla ilgili uygulamaların çoğu, bireysel ağ arayüzlerini önemsemez, daha yüksek bir seviyede çalışırlar. Örneğin, bir web tarayıcısı TCP bağlantıları yapmak ister ve bir web sunucusu TCP bağlantılarını dinlemek ister. Bu amaçla, faydalı olacak olan yüksek seviyeli ağ protokolleri için cihazlardır, örn.
{ echo $'GET http://www.google.com/ HTTP/1.0\r';
echo $'Host: www.google.com\r';
echo $'\r' >&0; cat; } <>/dev/tcp/www.google.com/80
Aslında ksh ve bash, TCP ve UDP müşterileri için böyle bir arayüz sağlar. Bununla birlikte, genel olarak, ağ uygulamaları dosyaya erişen uygulamalardan daha karmaşıktır. Veri alışverişlerinin çoğu read
ve benzeri çağrılarla gerçekleştirilirken write
, bağlantının kurulması sadece bir dosya adından daha fazla bilgi gerektirir. Örneğin, TCP bağlantılarını dinlemek iki adım atar: biri sunucu dinlemeye başladığında yapılacak ve biri her müşteri bağlandığında yapılacaktır. Bu tür ilave adımlar, ağ oluşturma işleminin kendi API'sine sahip olmasının ana nedeni olan API dosyasına uygun değildir.
Genellikle /dev
Linux'ta girişleri olmayan (ancak bazı diğer unix değişkenlerinde bulunan) başka bir aygıt sınıfı video bağdaştırıcılarıdır. Prensip olarak, basit video adaptörleri , her pikselin rengini temsil eden bloklardan yapılmış blok aygıtları olabilen çerçeve oluşturucu aygıtlar olarak gösterilebilir. Hızlandırılmış video adaptörleri, uygulamaların komut gönderdiği karakter cihazları olarak gösterilebilir. Burada, cihaz arabiriminin dezavantajı yavaştır: görüntüleme uygulamasının (pratikte bir X sunucusu), herhangi bir şeyi görüntülerken çekirdek çağrıları yapması gerekir. Bunun yerine, X sunucusunun çoğunlukla doğrudan video bağdaştırıcısının belleğine yazdığı, çünkü daha hızlı.