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

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țăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ 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)