Provided by: manpages-ro-dev_4.28.0-2_all 

NUME
obține și definește atributele terminalului, controlul liniei, obține și definește rata de transmisie în
baud
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <termios.h>
#include <unistd.h>
int tcgetattr(int fd, struct termios *termios_p);
int tcsetattr(int fd, int optional_actions,
const struct termios *termios_p);
int tcsendbreak(int fd, int duration);
int tcdrain(int fd);
int tcflush(int fd, int queue_selector);
int tcflow(int fd, int action);
void cfmakeraw(struct termios *termios_p);
speed_t cfgetispeed(const struct termios *termios_p);
speed_t cfgetospeed(const struct termios *termios_p);
int cfsetispeed(struct termios *termios_p, speed_t speed);
int cfsetospeed(struct termios *termios_p, speed_t speed);
int cfsetspeed(struct termios *termios_p, speed_t speed);
Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):
cfsetspeed(), cfmakeraw():
Începând cu glibc 2.19:
_DEFAULT_SOURCE
glibc 2.19 și versiunile anterioare:
_BSD_SOURCE
DESCRIERE
Funcțiile termios descriu o interfață generală de terminal care este furnizată pentru a controla
porturile de comunicații asincrone.
Structura termios
Multe dintre funcțiile descrise aici au un argument termios_p care este un indicator către o structură
termios. Această structură conține cel puțin următorii membri:
tcflag_t c_iflag; /* moduri de intrare */
tcflag_t c_oflag; /* moduri de ieșire */
tcflag_t c_cflag; /* moduri de control */
tcflag_t c_lflag; /* moduri locale */
cc_t c_cc[NCCS]; /* caractere speciale */
Valorile care pot fi atribuite acestor câmpuri sunt descrise mai jos. În cazul primelor patru câmpuri de
tip mască de biți, definițiile unora dintre fanioanele asociate care pot fi activate sunt expuse numai
dacă este definită o macroinstrucțiune specifică de testare a caracteristicilor (a se vedea
feature_test_macros(7)), după cum se menționează în paranteze („[]”).
În descrierile de mai jos, „nu există în POSIX” înseamnă că valoarea nu este specificată în POSIX.1-2001,
iar „XSI” înseamnă că valoarea este specificată în POSIX.1-2001 ca parte a extensiei XSI.
Constantele fanionului c_iflag:
IGNBRK Ignoră condiția BREAK de la intrare.
BRKINT Dacă IGNBRK este activat, un BREAK este ignorat. Dacă nu este activat, dar BRKINT este activat,
atunci un BREAK determină golirea cozilor de intrare și ieșire și, dacă terminalul este terminalul
de control al unui grup de procese în prim plan, va determina trimiterea unui semnal SIGINT către
acest grup de procese în prim plan. Atunci când nici IGNBRK, nici BRKINT nu sunt activate, un
BREAK este citit ca un octet nul ('\0'), cu excepția cazului în care PARMRK este activat, caz în
care este citit ca secvența \377 \0 \0.
IGNPAR Ignoră erorile de încadrare și de paritate.
PARMRK Dacă acest bit este activat, octeții de intrare cu erori de paritate sau de încadrare sunt marcați
atunci când sunt transferați către program. Acest bit este semnificativ numai atunci când INPCK
este activat și IGNPAR nu este activat. Modul în care sunt marcați octeții eronați este cu doi
octeți precedenți, \377 și \0. Astfel, programul citește de fapt trei octeți pentru un octet
eronat primit de la terminal. Dacă un octet valid are valoarea \377, iar ISTRIP (vezi mai jos) nu
este activat, programul îl poate confunda cu prefixul care marchează o eroare de paritate. Prin
urmare, un octet valid \377 este transmis programului ca doi octeți, \377 \377, în acest caz.
Dacă nu este activat nici IGNPAR, nici PARMRK, citește un caracter cu o eroare de paritate sau o
eroare de încadrare ca \0.
INPCK Activează verificarea parității de intrare.
ISTRIP Îndepărtează al optulea bit.
INLCR Traduce NL în CR la intrare.
IGNCR Ignoră returul de cărucior la intrare.
ICRNL Transformă returul de cărucior în linie nouă la intrare (cu excepția cazului în care IGNCR este
activat).
IUCLC (nu există în POSIX) Transformă caracterele majuscule în caractere minuscule la intrare.
IXON Activează controlul fluxului XON/XOFF de la ieșire.
IXANY (XSI) Tastarea oricărui caracter va reporni ieșirea oprită. (Valoarea implicită este de a permite
doar caracterului START să repornească ieșirea.)
IXOFF Activează controlul fluxului XON/XOFF de la intrare.
IMAXBEL
(nu există în POSIX) Sună un clopoțel atunci când coada de intrare este plină. Linux nu
implementează acest bit și acționează ca și cum ar fi întotdeauna activat.
IUTF8 (începând cu Linux 2.6.4)
(nu există în POSIX) Intrarea este UTF8; acest lucru permite ca ștergerea caracterelor să fie
efectuată corect în modul procesat.
Constantele fanionului c_oflag:
OPOST Activează procesarea de la ieșire definită de implementare.
OLCUC (nu există în POSIX) Transformă caracterele în minuscule în majuscule la ieșire.
ONLCR (XSI) Traduce NL în CR-NL la ieșire.
OCRNL Traduce CR la NL la ieșire.
ONOCR Nu se emite CR la coloana 0.
ONLRET Se presupune că caracterul NL îndeplinește funcția de retur de cărucior; ideea nucleului cu
privire la coloana curentă este că aceasta este stabilită la 0 atât după NL, cât și după CR.
OFILL Trimite caractere de umplere pentru o întârziere, în loc să folosească o întârziere temporizată.
OFDEL Caracterul de umplere este ASCII DEL (0177). Dacă nu este definit, caracterul de umplere este
ASCII NUL ('\0'). (Nu este implementat pe Linux.)
NLDLY Mască de întârziere a liniei noi. Valorile sunt NL0 și NL1. [necesită _BSD_SOURCE sau _SVID_SOURCE
sau _XOPEN_SOURCE]
CRDLY Mască de întârziere a returului de cărucior. Valorile sunt CR0, CR1, CR2 sau CR3. [necesită
_BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE]
TABDLY Mască de întârziere a tabulatorului orizontal. Valorile sunt TAB0, TAB1, TAB2, TAB3 (sau XTABS,
dar consultați secțiunea ERORI). O valoare de TAB3, adică XTABS, extinde tabulatoarele la spații
(cu opriri de tabulare la fiecare opt coloane). [necesită _BSD_SOURCE sau _SVID_SOURCE sau
_XOPEN_SOURCE]
BSDLY Mască de întârziere a backspace-urilor. Valorile sunt BS0 sau BS1. (Nu a fost niciodată
implementat.) [necesită _BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE]
VTDLY Mască de întârziere a tabulatorului vertical. Valorile sunt VT0 sau VT1.
FFDLY Mască de întârziere a avansului de pagină (saltul de pagină). Valorile sunt FF0 sau FF1 [necesită
_BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE]
Constantele fanionului c_cflag:
CBAUD (nu există în POSIX) Masca vitezei în baud (4+1 biți). [necesită _BSD_SOURCE sau _SVID_SOURCE]
CBAUDEX
(nu există în POSIX) Mască suplimentară de viteză baud (1 bit), inclusă în CBAUD. [necesită
_BSD_SOURCE sau _SVID_SOURCE]
(POSIX spune că viteza de baud este stocată în structura termios fără a specifica unde anume, și
oferă cfgetispeed() și cfsetispeed() pentru a ajunge la ea. Unele sisteme utilizează biții
selectați de CBAUD în c_cflag, alte sisteme utilizează câmpuri separate, de exemplu, sg_ispeed și
sg_ospeed).
CSIZE Mască pentru dimensiunea caracterelor. Valorile sunt CS5, CS6, CS7 sau CS8.
CSTOPB Stabilește doi biți de stop, în loc de unul.
CREAD Activează receptorul.
PARENB Activează generarea parității la ieșire și verificarea parității la intrare.
PARODD Dacă este activată, atunci paritatea pentru intrare și ieșire este impară; în caz contrar, este
utilizată paritatea pară.
HUPCL Coboară liniile de control ale modemului după ce ultimul proces închide dispozitivul (hang up).
CLOCAL Ignoră liniile de control ale modemului.
LOBLK (nu există în POSIX) Blochează ieșirea de la un strat de shell care nu este curent. Pentru
utilizare de către shl (straturi shell). (Nu este implementat în Linux.)
CIBAUD (nu există în POSIX) Mască pentru vitezele de intrare. Valorile pentru biții CIBAUD sunt aceleași
cu valorile pentru biții CBAUD, biții IBSHIFT deplasați la stânga. [necesită _BSD_SOURCE sau
_SVID_SOURCE] (Neimplementat în glibc, acceptat pe Linux prin ioctls TCGET* și TCSET*; a se vedea
ioctl_tty(2))
CMSPAR (nu există în POSIX) Utilizarea parității „stick” (marcaj/spațiu) (acceptată pe anumite
dispozitive seriale): dacă PARODD este activat, bitul de paritate este întotdeauna 1; dacă PARODD
nu este activat, atunci bitul de paritate este întotdeauna 0. [necesită _BSD_SOURCE sau
_SVID_SOURCE]
CRTSCTS
(nu există în POSIX) Activează controlul fluxului RTS/CTS (hardware). [necesită _BSD_SOURCE sau
_SVID_SOURCE]
Constantele fanionului c_lflag:
ISIG Când se primește oricare dintre caracterele INTR, QUIT, SUSP sau DSUSP, generează semnalul
corespunzător.
ICANON Activează modul canonic (descris mai jos).
XCASE (nu există în POSIX; nu este acceptat în Linux) Dacă ICANON este de asemenea activat, terminalul
este numai cu majuscule. Intrarea este convertită în minuscule, cu excepția caracterelor precedate
de \. La ieșire, caracterele majuscule sunt precedate de \, iar caracterele minuscule sunt
convertite în majuscule. [necesită _BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE]
ECHO Afișează caracterele de intrare.
ECHOE Dacă ICANON este de asemenea activat, caracterul ERASE șterge caracterul de intrare precedent, iar
WERASE șterge cuvântul precedent.
ECHOK Dacă ICANON este de asemenea activat, caracterul KILL șterge linia curentă.
ECHONL Dacă ICANON este, de asemenea, activat, redă caracterul NL chiar dacă ECHO nu este activat.
ECHOCTL
(nu există în POSIX) Dacă ECHO este de asemenea activat, caracterele speciale ale terminalului,
altele decât TAB, NL, START și STOP, sunt redate ca ^X, unde X este caracterul cu codul ASCII 0x40
mai mare decât caracterul special. De exemplu, caracterul 0x08 (BS) este redat ca ^H. [necesită
_BSD_SOURCE sau _SVID_SOURCE]
ECHOPRT
(nu există în POSIX) Dacă ICANON și ECHO sunt de asemenea activate, caracterele sunt imprimate în
timp ce sunt șterse. [necesită _BSD_SOURCE sau _SVID_SOURCE]
ECHOKE (nu există în POSIX) Dacă ICANON este de asemenea activat, KILL este reluat prin ștergerea
fiecărui caracter de pe linie, conform specificațiilor ECHOE și ECHOPRT. [necesită _BSD_SOURCE sau
_SVID_SOURCE]
DEFECHO
(nu există în POSIX) Echo numai atunci când un proces citește. (Nu este implementat în Linux.)
FLUSHO (nu există în POSIX; nu este acceptat în Linux) Ieșirea este eliminată. Acest fanion este activat
prin tastarea caracterului DISCARD. [necesită _BSD_SOURCE sau _SVID_SOURCE]
NOFLSH Dezactivează golirea cozilor de intrare și ieșire la generarea semnalelor pentru caracterele INT,
QUIT și SUSP.
TOSTOP Trimite semnalul SIGTTOU către grupul de procese al unui proces din fundal care încearcă să scrie
la terminalul său de control.
PENDIN (nu există în POSIX; nu este acceptat în Linux) Toate caracterele din coada de intrare sunt
reimprimate atunci când este citit următorul caracter. (bash(1) gestionează în acest fel
„typeahead”). [necesită _BSD_SOURCE sau _SVID_SOURCE]
IEXTEN Activează procesarea de intrare definită de implementare. Acest fanion, precum și ICANON trebuie
să fie activate pentru ca caracterele speciale EOL2, LNEXT, REPRINT, WERASE să fie interpretate și
pentru ca fanionul IUCLC să fie eficient.
Matricea c_cc definește caracterele speciale ale terminalului. Indicii simbolici (valorile inițiale) și
semnificația lor sunt:
VDISCARD
(nu există în POSIX; nu este acceptat în Linux; 017, SI, Ctrl-O) Comută: începe/încetează să
elimine ieșirea în așteptare. Recunoscut atunci când IEXTEN este activat, iar apoi nu este
transmis ca intrare.
VDSUSP (nu există în POSIX; nu este acceptat în Linux; 031, EM, Ctrl-Y) Caracter de suspendare întârziată
(DSUSP): trimite semnalul SIGTSTP atunci când caracterul este citit de programul utilizatorului.
Recunoscut atunci când IEXTEN și ISIG sunt activate, iar sistemul utilizează funcția de control al
lucrărilor, iar apoi nu este transmis ca intrare.
VEOF (004, EOT, Ctrl-D) Caracter de sfârșit de fișier (EOF). Mai exact: acest caracter face ca memoria
tampon tty în așteptare să fie trimisă programului utilizator în așteptare, fără a aștepta
sfârșitul de linie. Dacă este primul caracter al liniei, read(2) din programul utilizator
returnează 0, ceea ce înseamnă sfârșit de fișier. Recunoscut atunci când ICANON este activat, iar
apoi nu este transmis ca intrare.
VEOL (0, NUL) Caracter suplimentar de sfârșit de linie (EOL). Recunoscut atunci când ICANON este
activat.
VEOL2 (nu există în POSIX; 0, NUL) Încă un caracter de sfârșit de linie (EOL2). Recunoscut atunci când
ICANON este activat.
VERASE (0177, DEL, rubout, sau 010, BS, Ctrl-H, sau de asemenea #) Sterge caracterul (ERASE). Acesta
șterge caracterul anterior care nu a fost încă șters, dar nu șterge după EOF sau începutul de
linie. Recunoscut atunci când ICANON este activat, iar apoi nu este transmis ca intrare.
VINTR (003, ETX, Ctrl-C, sau de asemenea 0177, DEL, rubout) Caracter de întrerupere (INTR). Trimite un
semnal SIGINT. Recunoscut atunci când ISIG este activat, iar apoi nu este transmis ca intrare.
VKILL (025, NAK, Ctrl-U sau Ctrl-X, sau, de asemenea, @) Caracter de anulare (KILL). Acesta șterge
intrarea de la ultimul EOF sau început de linie. Recunoscut atunci când ICANON este activat, iar
apoi nu este transmis ca intrare.
VLNEXT (nu există în POSIX; 026, SYN, Ctrl-V) Literal next (LNEXT). Introduce între ghilimele următorul
caracter de intrare, privându-l de o posibilă semnificație specială. Recunoscut atunci când IEXTEN
este activat, iar apoi nu este transmis ca intrare.
VMIN Numărul minim de caractere pentru citirea noncanonică (MIN).
VQUIT (034, FS, Ctrl-\) Caracter de ieșire (QUIT). Trimite semnalul SIGQUIT. Recunoscut atunci când ISIG
este activat, iar apoi nu este transmis ca intrare.
VREPRINT
(nu există în POSIX; 022, DC2, Ctrl-R) Reimprimă caracterele necitite (REPRINT). Recunoscut atunci
când ICANON și IEXTEN sunt activate, iar apoi nu este transmis ca intrare.
VSTART (021, DC1, Ctrl-Q) Caracter de pornire (START). Repornește ieșirea oprită de caracterul Stop.
Recunoscut atunci când IXON este activat, iar apoi nu este transmis ca intrare.
VSTATUS
(nu există în POSIX; nu este acceptat în Linux; cerere de stare: 024, DC4, Ctrl-T). Caracter de
stare (STATUS). Afișează informații de stare la terminal, inclusiv starea procesului din prim-plan
și cantitatea de timp CPU pe care a consumat-o. De asemenea, trimite un semnal SIGINFO (nu este
acceptat în Linux) către grupul de procese din prim-plan.
VSTOP (023, DC3, Ctrl-S) Caracter de oprire (STOP). Oprește ieșirea până la tastarea caracterului Start.
Recunoscut atunci când IXON este activat, iar apoi nu este transmis ca intrare.
VSUSP (032, SUB, Ctrl-Z) Caracter de suspendare (SUSP). Trimite semnalul SIGTSTP. Recunoscut atunci
când ISIG este activat, iar apoi nu este transmis ca intrare.
VSWTCH (nu există în POSIX; nu este acceptat în Linux; 0, NUL) Caracter de comutare (SWTCH). Utilizat în
System V pentru a schimba shell-urile în shell layers, un predecesor al controlului lucrărilor
shell.
VTIME Timp de așteptare în zeci de secunde pentru citirea noncanonică (TIME).
VWERASE
(nu există în POSIX; 027, ETB, Ctrl-W) Șterge cuvintele (WERASE). Recunoscut atunci când ICANON și
IEXTEN sunt activate, iar apoi nu este transmis ca intrare.
Un caracter special de terminal individual poate fi dezactivat prin definirea valorii elementului c_cc
corespunzător la _POSIX_VDISABLE.
Valorile sub-indicilor simbolici de mai sus sunt toate diferite, cu excepția faptului că VTIME, VMIN pot
avea aceeași valoare ca VEOL, respectiv VEOF. În modul noncanonic, semnificația caracterului special
este înlocuită cu semnificația timpului de așteptare. Pentru o explicație a VMIN și VTIME, consultați
descrierea modului necanonic de mai jos.
Preluarea și modificarea configurărilor terminalului
tcgetattr() obține parametrii asociați obiectului la care se face referire prin fd și îi stochează în
structura termios la care se face referire prin termios_p. Această funcție poate fi invocată dintr-un
proces din fundal; cu toate acestea, atributele terminalului pot fi modificate ulterior de un proces din
prim-plan.
tcsetattr() stabilește parametrii asociați terminalului (cu excepția cazului în care este necesar un
suport din partea hardware-ului de bază care nu este disponibil) din structura termios la care se face
referire prin termios_p. optional_actions specifică momentul în care modificările intră în vigoare:
TCSANOW
schimbarea are loc imediat.
TCSADRAIN
modificarea are loc după ce toate ieșirile scrise în fd au fost transmise. Această opțiune trebuie
utilizată atunci când se modifică parametrii care afectează ieșirea.
TCSAFLUSH
modificarea are loc după ce toate ieșirile scrise la obiectul la care se referă fd au fost
transmise, iar toate intrările care au fost primite, dar nu citite, vor fi eliminate înainte de
efectuarea modificării.
Modul canonic și necanonic
Activarea fanionului canonic ICANON în c_lflag determină dacă terminalul funcționează în mod canonic
(ICANON activat) sau în mod necanonic (ICANON dezactivat). În mod implicit, ICANON este activat.
În modul canonic:
• Intrarea este disponibilă linie cu linie. O linie de intrare este disponibilă atunci când este tastat
unul dintre delimitatorii de linie (NL, EOL, EOL2; sau EOF la începutul liniei). Cu excepția cazului
EOF, delimitatorul de linie este inclus în tamponul returnat de read(2).
• Editarea liniilor este activată (ERASE, KILL; și dacă fanionul IEXTEN este activat: WERASE, REPRINT,
LNEXT). Un apel read(2) returnează cel mult o linie de intrare; dacă apelul read(2) a solicitat mai
puțini octeți decât sunt disponibili în linia curentă de intrare, atunci sunt citiți doar atâția
octeți câți au fost solicitați, iar caracterele rămase vor fi disponibile pentru un viitor apel
read(2).
• Lungimea maximă a liniei este de 4096 de caractere (inclusiv caracterul de sfârșit de linie nouă);
liniile mai lungi de 4096 de caractere sunt trunchiate. După 4095 de caractere, procesarea intrării
(de exemplu, procesarea ISIG și ECHO*) continuă, dar orice date de intrare după 4095 de caractere până
la (dar fără a include) orice linie nouă de terminare sunt eliminate. Acest lucru asigură faptul că
terminalul poate primi întotdeauna mai multe date de intrare până când cel puțin o linie poate fi
citită.
În modul necanonic, intrarea este disponibilă imediat (fără ca utilizatorul să fie nevoit să tasteze un
caracter de delimitare a liniei), nu se efectuează nicio prelucrare a intrării, iar editarea liniei este
dezactivată. Tamponul de citire va accepta numai 4095 de caractere; acest lucru asigură spațiul necesar
pentru un caracter de linie nouă în cazul în care modul de intrare este comutat la modul canonic.
Valorile MIN (c_cc[VMIN]) și TIME (c_cc[VTIME]) determină circumstanțele în care se finalizează un
read(2); există patru cazuri distincte:
MIN == 0, TIME == 0 (sondarea citirii)
Dacă datele sunt disponibile, read(2) returnează imediat, cu cel mai mic dintre numărul de octeți
disponibili sau numărul de octeți solicitați. Dacă nu există date disponibile, read(2) returnează
0.
MIN > 0, TIME == 0 (blocarea citirii)
read(2) blochează până când sunt disponibili MIN octeți și returnează până la numărul de octeți
solicitat.
MIN == 0, TIME > 0 (citire cu timp limită)
TIME specifică limita pentru un temporizator în zecimi de secundă. Temporizatorul este pornit
atunci când este apelat read(2). read(2) returnează fie atunci când cel puțin un octet de date
este disponibil, fie atunci când temporizatorul expiră. În cazul în care temporizatorul expiră
fără ca vreo intrare să devină disponibilă, read(2) returnează 0. În cazul în care datele sunt
deja disponibile în momentul apelului la read(2), apelul se comportă ca și cum datele ar fi fost
primite imediat după apel.
MIN > 0, TIME > 0 (citire cu timp de așteptare între octeți)
TIME specifică limita pentru un temporizator în zecimi de secundă. Odată ce un octet inițial de
intrare devine disponibil, temporizatorul este repornit după primirea fiecărui alt octet. read(2)
revine atunci când este îndeplinită oricare dintre următoarele condiții:
• Au fost primiți MIN octeți.
• Timpul de așteptare între octeți expiră.
• Numărul de octeți solicitat de read(2) a fost primit. (POSIX nu specifică această condiție de
terminare, iar pe unele alte implementări read(2) nu returnează în acest caz).
Deoarece temporizatorul este pornit numai după ce octetul inițial devine disponibil, cel puțin un
octet va fi citit. Dacă datele sunt deja disponibile la momentul apelului la read(2), apelul se
comportă ca și cum datele ar fi fost primite imediat după apel.
POSIX nu specifică dacă valoarea faniomului de stare a fișierului O_NONBLOCK are prioritate față de
valorile MIN și TIME. Dacă O_NONBLOCK este activat, un read(2) în modul necanonic poate reveni imediat,
indiferent de valoarea MIN sau TIME. În plus, dacă nu există date disponibile, POSIX permite ca un
read(2) în mod necanonic să returneze fie 0, fie -1 cu errno fixată la EAGAIN.
Modul brut
cfmakeraw() configurează terminalul într-un mod asemănător modului „raw” (brut) al vechiului controlor de
terminal Versiunea 7: intrarea este disponibilă caracter cu caracter, ecoul este dezactivat și toate
procesările speciale ale caracterelor de intrare și ieșire ale terminalului sunt dezactivate. Atributele
terminalului sunt configurate după cum urmează:
termios_p->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
| INLCR | IGNCR | ICRNL | IXON);
termios_p->c_oflag &= ~OPOST;
termios_p->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
termios_p->c_cflag &= ~(CSIZE | PARENB);
termios_p->c_cflag |= CS8;
Controlul liniei
tcsendbreak() transmite un flux continuu de biți cu valoare zero pentru o anumită durată, dacă terminalul
utilizează transmiterea asincronă de date seriale. Dacă duration este zero, aceasta transmite biți cu
valoare zero timp de cel puțin 0,25 secunde și nu mai mult de 0,5 secunde. Dacă duration nu este zero,
aceasta transmite biți cu valoare zero pentru o anumită perioadă de timp definită de implementare.
Dacă terminalul nu utilizează transmiterea asincronă de date seriale, tcsendbreak() revine fără a
întreprinde nicio acțiune.
tcdrain() așteaptă până când toate ieșirile scrise în obiectul la care face referire fd au fost
transmise.
tcflush() elimină datele scrise în obiectul la care se referă fd, dar care nu au fost transmise, sau
datele primite, dar care nu au fost citite, în funcție de valoarea lui queue_selector:
TCIFLUSH
șterge datele primite, dar necitite.
TCOFLUSH
șterge datele scrise, dar care nu au fost transmise.
TCIOFLUSH
șterge atât datele primite, dar care nu au fost citite, cât și datele scrise, dar care nu au fost
transmise.
tcflow() suspendă transmiterea sau recepția de date pe obiectul la care se referă fd, în funcție de
valoarea lui action:
TCOOFF suspendă ieșirea.
TCOON repornește ieșirea suspendată.
TCIOFF transmite un caracter STOP, care oprește dispozitivul de terminal de la transmiterea de date către
sistem.
TCION transmite un caracter START, care pornește dispozitivul de terminal să transmită date către
sistem.
În mod implicit, la deschiderea unui fișier terminal, nici intrarea, nici ieșirea acestuia nu sunt
suspendate.
Viteza liniei
Funcțiile privind viteza baud sunt furnizate pentru obținerea și definirea valorilor vitezelor baud de
intrare și ieșire în structura termios. Noile valori nu intră în vigoare până când tcsetattr() nu este
apelat cu succes.
Stabilirea vitezei la B0 instruiește modemul să „închidă”. Viteza reală de biți corespunzătoare lui
B38400 poate fi modificată cu setserial(8).
Vitezele în baud de intrare și de ieșire sunt stocate în structura termios.
cfgetospeed() returnează viteza baud de ieșire stocată în structura termios indicată de termios_p.
cfsetospeed() stabilește rata de baud de ieșire stocată în structura termios indicată de termios_p la
speed, care trebuie să fie una dintre aceste constante:
B0
B50
B75
B110
B134
B150
B200
B300
B600
B1200
B1800
B2400
B4800
B9600
B19200
B38400
B57600
B115200
B230400
B460800
B500000
B576000
B921600
B1000000
B1152000
B1500000
B2000000
Aceste constante sunt acceptate suplimentar pe arhitectura SPARC:
B76800
B153600
B307200
B614400
Aceste constante sunt acceptate suplimentar pe arhitecturile non-SPARC:
B2500000
B3000000
B3500000
B4000000
Datorită diferențelor dintre arhitecturi, aplicațiile portabile trebuie să verifice dacă o anumită
constantă Bnnn este definită înainte de a o utiliza.
Viteza de baud zero, B0, este utilizată pentru a încheia conexiunea. Dacă B0 este specificat, liniile de
control ale modemului nu vor mai fi asertate. În mod normal, acest lucru va deconecta linia. CBAUDEX este
o mască pentru vitezele dincolo de cele definite în POSIX.1 (57600 și peste). Astfel, B57600 & CBAUDEX
este diferită de zero.
Stabilirea vitezei de baud la o altă valoare decât cele definite de constantele Bnnn este posibilă prin
ioctl-ul TCSETS2; consultați ioctl_tty(2).
cfgetispeed() returnează viteza baud de intrare stocată în structura termios.
cfsetispeed() stabilește viteza de baud de intrare stocată în structura termios la speed, care trebuie
specificată ca una dintre constantele Bnnn enumerate mai sus pentru cfsetospeed(). Dacă viteza de baud de
intrare este definită la constanta literală 0 (nu la constanta simbolică B0), viteza de baud de intrare
va fi egală cu viteza de baud de ieșire.
cfsetspeed() este o extensie 4.4BSD. Aceasta preia aceleași argumente ca și cfsetispeed() și stabilește
atât viteza de intrare, cât și cea de ieșire.
VALOAREA RETURNATĂ
cfgetispeed() returnează viteza baud de intrare stocată în structura termios.
cfgetospeed() returnează viteza de baud de ieșire stocată în structura termios.
Toate celelalte funcții returnează:
0 în caz de succes.
-1 Toate celelalte funcții returnează: în caz de eșec și configurează errno pentru a indica eroarea.
Rețineți că tcsetattr() returnează rezultatul cu succes dacă oricare dintre modificările solicitate au
putut fi efectuate cu succes. Prin urmare, atunci când se fac mai multe modificări, poate fi necesar să
se facă un apel ulterior la tcgetattr() pentru a verifica dacă toate modificările au fost efectuate cu
succes.
ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
│ Interfață │ Atribut │ Valoare │
├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
│ tcgetattr(), tcsetattr(), tcdrain(), tcflush(), tcflow(), │ Siguranța firelor │ MT-Safe │
│ tcsendbreak(), cfmakeraw(), cfgetispeed(), cfgetospeed(), │ │ │
│ cfsetispeed(), cfsetospeed(), cfsetspeed() │ │ │
└─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘
STANDARDE
tcgetattr()
tcsetattr()
tcsendbreak()
tcdrain()
tcflush()
tcflow()
cfgetispeed()
cfgetospeed()
cfsetispeed()
cfsetospeed()
POSIX.1-2008.
cfmakeraw()
cfsetspeed()
BSD.
ISTORIC
tcgetattr()
tcsetattr()
tcsendbreak()
tcdrain()
tcflush()
tcflow()
cfgetispeed()
cfgetospeed()
cfsetispeed()
cfsetospeed()
POSIX.1-2001.
cfmakeraw()
cfsetspeed()
BSD.
NOTE
UNIX V7 și mai multe sisteme ulterioare au o listă de viteze în baud unde după valorile B0 până la B9600
se găsesc cele două constante EXTA, EXTB („Extern A” și „Extern B”). Multe sisteme extind lista cu
viteze în baud mult mai mari.
Efectul unei durate duration diferite de zero cu tcsendbreak() variază. SunOS specifică o pauză de
duration * N secunde, unde N este cel puțin 0,25 și nu mai mult de 0,5. Linux, AIX, DU, Tru64 trimit o
pauză de duration milisecunde. FreeBSD și NetBSD și HP-UX și MacOS ignoră valoarea lui duration. Sub
Solaris și UnixWare, tcsendbreak() cu duration diferită de zero se comportă ca tcdrain().
ERORI
Pe arhitectura Alpha înainte de Linux 4.16 (și glibc înainte de glibc 2.28), valoarea XTABS a fost
diferită de TAB3 și a fost ignorată de codul de disciplină al liniei N_TTY a controlorului de terminal ca
rezultat (deoarece nu a făcut parte din masca TABDLY).
CONSULTAȚI ȘI
reset(1), setterm(1), stty(1), tput(1), tset(1), tty(1), ioctl_console(2), ioctl_tty(2), cc_t(3type),
speed_t(3type), tcflag_t(3type), setserial(8)
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
Pagini de manual de Linux 6.9.1 15 iunie 2024 termios(3)