Un file de périphérique dans Linux peut-il pointer vers plusieurs files?

Un shell sous Linux (par exemple: bash ) a ses descripteurs de file stdin et stdout et stderr tous pointent vers le même file de périphérique, par exemple, les descripteurs de file stdin et stdout et stderr pour bash :

entrer la description de l'image ici

Maintenant /dev/tty1 n'est pas un file "réel" que vous pouvez lire et écrire, c'est un file de périphérique qui pointe vers un file ou vers un tampon en memory ou quelque chose d'autre.

Maintenant ma question est, est-ce que /dev/tty1 pointe vers un seul file, ou pointe-t-il vers deux files?

Ce que je veux dire, c'est que quand bash lit /dev/tty1 ( stdin ), et quand bash écrit dans /dev/tty1 ( stdout ou stderr ), lit-il et écrit dans le même file ou fait /dev/tty1 points à deux files, l'un est utilisé lors de la lecture de /dev/tty1 et l'autre est utilisé lors de l'écriture dans /dev/tty1 ?

Un noeud de périphérique pointe vers un seul périphérique , qui est géré par Linux par le kernel. Lorsque bash lit depuis /dev/tty1 , il lit depuis le pilote de périphérique gérant le premier terminal; quand il écrit, il écrit sur le même pilote de périphérique.

Un file de périphérique ne pointe pas sur plusieurs files. Un file de périphérique ne pointe même pas vers un seul file. Un file de périphérique pointe vers un pilote. Le pilote contient du code qui gère les opérations de lecture et d'écriture.

Il ne doit pas y avoir de relation entre datatables lues à partir du périphérique et datatables écrites. Certains appareils en ont un, d'autres pas. Par exemple, avec un disque, datatables qui sont lues à une certaine position sont datatables qui ont été précédemment écrites dans cette position. D'autre part, avec un port série, datatables écrites sur le périphérique sont envoyées sur la ligne série et datatables lues à partir du périphérique ont été reçues sur la ligne série; ce qui est envoyé est indépendant de ce qui est reçu.

Un terminal ressemble beaucoup à un périphérique série. En fait, historiquement, les terminaux physiques étaient généralement connectés par des lignes série. Lorsqu'une application lit à partir d'un file terminal, elle reçoit des données envoyées par le pilote du terminal ou par l'émulateur de terminal – le pilote / émulateur de terminal écrit l'input sur son côté du terminal, l'application lit l'input depuis son côté du terminal. Lorsqu'une application écrit dans un file terminal, elle envoie des données qui sont ensuite lues par le pilote du terminal ou par l'émulateur de terminal – l'application écrit la sortie sur son côté du terminal, le pilote / l'émulateur du terminal lit sa sortie du terminal .