Risposte:
I termini grezzi e cotti si applicano solo ai driver terminali. "Cotto" si chiama canonico e "crudo" si chiama modalità non canonica .
Il driver del terminale è, per impostazione predefinita, un sistema basato su linea: i caratteri vengono bufferizzati internamente fino a quando un ritorno a capo ( Entero Return) prima di essere passato al programma - questo viene chiamato "cotto". Questo permette alcuni caratteri da elaborare (vedi stty(1)
), ad esempio Cntl-D, Cntl-S, Ctrl-U Backspace); essenzialmente rudimentale line-editing. L'autista del terminale "cucina" i personaggi prima di servirli.
Il terminale può essere messo in modalità "raw" in cui i caratteri non vengono elaborati dal driver del terminale, ma vengono inviati direttamente (è possibile impostare che i caratteri INTR e QUIT siano ancora elaborati). Ciò consente a programmi come emacs
e vi
di utilizzare più facilmente l'intero schermo.
Puoi leggere di più al riguardo nella sezione "Modalità canonica" della termios(3)
pagina man.
I termini vengono utilizzati per descrivere l'I / O del terminale e del disco, ma significano cose diverse in ogni contesto.
Le modalità raw e cotte su un dispositivo terminale coprono l'elaborazione (carattere alla volta vs. linea alla volta, ci sono anche alcune altre differenze).
Un dispositivo disco 'grezzo' ( /dev/rdsk/*
) è un dispositivo a caratteri e /dev/dsk/
è un dispositivo a blocchi. IIRC la differenza principale è che il dispositivo a blocchi ha il buffering del kernel e il controllo fine sulle modalità I / O come l'I / O diretto / mappato può essere specificato su un difetto grezzo.
Una descrizione delle modalità tty crude e cotte è disponibile qui. Un post su dispositivi a disco grezzi o cotti può essere trovato qui.