Hayır, /dev/stdin
ve /dev/stdout
yanlış cihaz bulunmaktadır. Bunlar terminal cihazları değil, sırasıyla standart giriş ve standart çıkış için takma adlardır. Standart giriş ve tanımı standart çıkarılır, dosya tanımlayıcıları uygulamalar açık olması beklemek ve geleneksel anlamlara sahip olduğu (sırasıyla dosya tanıtıcısı, 0 ve 1, standart hata olduğu da 2 vardır). Uygulama gibi bir dosya adı gerektirdiğinde /dev/stdin
ve gibi aygıtlar /dev/stdout
kullanışlıdır, ancak uygulamanın kullanıcısı bir dosyayı açmak yerine belirli bir dosya tanımlayıcıya erişmesini ister. Unix varyantına bağlı olarak, aygıt dosyaları bile olmayabilirler; örneğin, Linux'ta,/proc/self/fd/0
ve bunlar da sürecin o dosya tanımlayıcısında zaten açık olan her dosyaya “sihirli” sembolik bağlardır.
İzinlerini değiştirmek /dev/stdin
ve /dev/stdout
yalnızca bu dosya adları açıkça kullanıldığında ne olacağını değiştirmek. Terminal ile ilgili hiçbir şeyi etkilemez ve standart giriş ve standart çıkışın normal kullanımını etkilemez, çünkü izinler sadece belirli bir dosya adını açarken önemlidir.
Yapılması mesg
gereken, sürecin kontrol terminalinin izinlerini değiştirmek . Terminalde çalışan bir uygulama için terminal standart giriş, standart çıkış ve standart hatada açıktır (dosya tanımlayıcıları 0, 1 ve 2). tty
Terminal aygıtının ne olduğunu görmek için komutu kullanabilirsiniz . mesg n
eşittir chmod g-w "$(tty)"
ve mesg y
eşittir chmod g+w "$(tty)"
.
mesg n
izinleri,write
yalnızca terminali açıkwrite
olmadığından geleceği etkilemek için kullanabilir .