termios(3) Library Functions Manual termios(3) NUME obine i definete atributele terminalului, controlul liniei, obine i definete rata de transmisie in baud BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include #include 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); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): cfsetspeed(), cfmakeraw(): Incepand cu glibc 2.19: _DEFAULT_SOURCE glibc 2.19 i versiunile anterioare: _BSD_SOURCE DESCRIERE Funciile termios descriu o interfaa generala de terminal care este furnizata pentru a controla porturile de comunicaii asincrone. Structura termios Multe dintre funciile descrise aici au un argument termios_p care este un indicator catre o structura termios. Aceasta structura conine cel puin urmatorii membri: tcflag_t c_iflag; /* moduri de intrare */ tcflag_t c_oflag; /* moduri de ieire */ 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 campuri sunt descrise mai jos. In cazul primelor patru campuri de tip masca de bii, definiiile unora dintre fanioanele asociate care pot fi activate sunt expuse numai daca este definita o macroinstruciune specifica de testare a caracteristicilor (a se vedea feature_test_macros(7)), dupa cum se menioneaza in paranteze (,,[]"). In descrierile de mai jos, ,,nu exista in POSIX" inseamna ca valoarea nu este specificata in POSIX.1-2001, iar ,,XSI" inseamna ca valoarea este specificata in POSIX.1-2001 ca parte a extensiei XSI. Constantele fanionului c_iflag: IGNBRK Ignora condiia BREAK de la intrare. BRKINT Daca IGNBRK este activat, un BREAK este ignorat. Daca nu este activat, dar BRKINT este activat, atunci un BREAK determina golirea cozilor de intrare i ieire i, daca terminalul este terminalul de control al unui grup de procese in prim plan, va determina trimiterea unui semnal SIGINT catre acest grup de procese in prim plan. Atunci cand nici IGNBRK, nici BRKINT nu sunt activate, un BREAK este citit ca un octet nul ('\0'), cu excepia cazului in care PARMRK este activat, caz in care este citit ca secvena \377 \0 \0. IGNPAR Ignora erorile de incadrare i de paritate. PARMRK Daca acest bit este activat, octeii de intrare cu erori de paritate sau de incadrare sunt marcai atunci cand sunt transferai catre program. Acest bit este semnificativ numai atunci cand INPCK este activat i IGNPAR nu este activat. Modul in care sunt marcai octeii eronai este cu doi octei precedeni, \377 i \0. Astfel, programul citete de fapt trei octei pentru un octet eronat primit de la terminal. Daca un octet valid are valoarea \377, iar ISTRIP (vezi mai jos) nu este activat, programul il poate confunda cu prefixul care marcheaza o eroare de paritate. Prin urmare, un octet valid \377 este transmis programului ca doi octei, \377 \377, in acest caz. Daca nu este activat nici IGNPAR, nici PARMRK, citete un caracter cu o eroare de paritate sau o eroare de incadrare ca \0. INPCK Activeaza verificarea paritaii de intrare. ISTRIP Indeparteaza al optulea bit. INLCR Traduce NL in CR la intrare. IGNCR Ignora returul de carucior la intrare. ICRNL Transforma returul de carucior in linie noua la intrare (cu excepia cazului in care IGNCR este activat). IUCLC (nu exista in POSIX) Transforma caracterele majuscule in caractere minuscule la intrare. IXON Activeaza controlul fluxului XON/XOFF de la ieire. IXANY (XSI) Tastarea oricarui caracter va reporni ieirea oprita. (Valoarea implicita este de a permite doar caracterului START sa reporneasca ieirea.) IXOFF Activeaza controlul fluxului XON/XOFF de la intrare. IMAXBEL (nu exista in POSIX) Suna un clopoel atunci cand coada de intrare este plina. Linux nu implementeaza acest bit i acioneaza ca i cum ar fi intotdeauna activat. IUTF8 (incepand cu Linux 2.6.4) (nu exista in POSIX) Intrarea este UTF8; acest lucru permite ca tergerea caracterelor sa fie efectuata corect in modul procesat. Constantele fanionului c_oflag: OPOST Activeaza procesarea de la ieire definita de implementare. OLCUC (nu exista in POSIX) Transforma caracterele in minuscule in majuscule la ieire. ONLCR (XSI) Traduce NL in CR-NL la ieire. OCRNL Traduce CR la NL la ieire. ONOCR Nu se emite CR la coloana 0. ONLRET Se presupune ca caracterul NL indeplinete funcia de retur de carucior; ideea nucleului cu privire la coloana curenta este ca aceasta este stabilita la 0 atat dupa NL, cat i dupa CR. OFILL Trimite caractere de umplere pentru o intarziere, in loc sa foloseasca o intarziere temporizata. OFDEL Caracterul de umplere este ASCII DEL (0177). Daca nu este definit, caracterul de umplere este ASCII NUL ('\0'). (Nu este implementat pe Linux.) NLDLY Masca de intarziere a liniei noi. Valorile sunt NL0 i NL1. [necesita _BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE] CRDLY Masca de intarziere a returului de carucior. Valorile sunt CR0, CR1, CR2 sau CR3. [necesita _BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE] TABDLY Masca de intarziere a tabulatorului orizontal. Valorile sunt TAB0, TAB1, TAB2, TAB3 (sau XTABS, dar consultai seciunea ERORI). O valoare de TAB3, adica XTABS, extinde tabulatoarele la spaii (cu opriri de tabulare la fiecare opt coloane). [necesita _BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE] BSDLY Masca de intarziere a backspace-urilor. Valorile sunt BS0 sau BS1. (Nu a fost niciodata implementat.) [necesita _BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE] VTDLY Masca de intarziere a tabulatorului vertical. Valorile sunt VT0 sau VT1. FFDLY Masca de intarziere a avansului de pagina (saltul de pagina). Valorile sunt FF0 sau FF1 [necesita _BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE] Constantele fanionului c_cflag: CBAUD (nu exista in POSIX) Masca vitezei in baud (4+1 bii). [necesita _BSD_SOURCE sau _SVID_SOURCE] CBAUDEX (nu exista in POSIX) Masca suplimentara de viteza baud (1 bit), inclusa in CBAUD. [necesita _BSD_SOURCE sau _SVID_SOURCE] (POSIX spune ca viteza de baud este stocata in structura termios fara a specifica unde anume, i ofera cfgetispeed() i cfsetispeed() pentru a ajunge la ea. Unele sisteme utilizeaza biii selectai de CBAUD in c_cflag, alte sisteme utilizeaza campuri separate, de exemplu, sg_ispeed i sg_ospeed). CSIZE Masca pentru dimensiunea caracterelor. Valorile sunt CS5, CS6, CS7 sau CS8. CSTOPB Stabilete doi bii de stop, in loc de unul. CREAD Activeaza receptorul. PARENB Activeaza generarea paritaii la ieire i verificarea paritaii la intrare. PARODD Daca este activata, atunci paritatea pentru intrare i ieire este impara; in caz contrar, este utilizata paritatea para. HUPCL Coboara liniile de control ale modemului dupa ce ultimul proces inchide dispozitivul (hang up). CLOCAL Ignora liniile de control ale modemului. LOBLK (nu exista in POSIX) Blocheaza ieirea de la un strat de shell care nu este curent. Pentru utilizare de catre shl (straturi shell). (Nu este implementat in Linux.) CIBAUD (nu exista in POSIX) Masca pentru vitezele de intrare. Valorile pentru biii CIBAUD sunt aceleai cu valorile pentru biii CBAUD, biii IBSHIFT deplasai la stanga. [necesita _BSD_SOURCE sau _SVID_SOURCE] (Neimplementat in glibc, acceptat pe Linux prin ioctls TCGET* i TCSET*; a se vedea ioctl_tty(2)) CMSPAR (nu exista in POSIX) Utilizarea paritaii ,,stick" (marcaj/spaiu) (acceptata pe anumite dispozitive seriale): daca PARODD este activat, bitul de paritate este intotdeauna 1; daca PARODD nu este activat, atunci bitul de paritate este intotdeauna 0. [necesita _BSD_SOURCE sau _SVID_SOURCE] CRTSCTS (nu exista in POSIX) Activeaza controlul fluxului RTS/CTS (hardware). [necesita _BSD_SOURCE sau _SVID_SOURCE] Constantele fanionului c_lflag: ISIG Cand se primete oricare dintre caracterele INTR, QUIT, SUSP sau DSUSP, genereaza semnalul corespunzator. ICANON Activeaza modul canonic (descris mai jos). XCASE (nu exista in POSIX; nu este acceptat in Linux) Daca ICANON este de asemenea activat, terminalul este numai cu majuscule. Intrarea este convertita in minuscule, cu excepia caracterelor precedate de \. La ieire, caracterele majuscule sunt precedate de \, iar caracterele minuscule sunt convertite in majuscule. [necesita _BSD_SOURCE sau _SVID_SOURCE sau _XOPEN_SOURCE] ECHO Afieaza caracterele de intrare. ECHOE Daca ICANON este de asemenea activat, caracterul ERASE terge caracterul de intrare precedent, iar WERASE terge cuvantul precedent. ECHOK Daca ICANON este de asemenea activat, caracterul KILL terge linia curenta. ECHONL Daca ICANON este, de asemenea, activat, reda caracterul NL chiar daca ECHO nu este activat. ECHOCTL (nu exista in POSIX) Daca ECHO este de asemenea activat, caracterele speciale ale terminalului, altele decat TAB, NL, START i STOP, sunt redate ca ^X, unde X este caracterul cu codul ASCII 0x40 mai mare decat caracterul special. De exemplu, caracterul 0x08 (BS) este redat ca ^H. [necesita _BSD_SOURCE sau _SVID_SOURCE] ECHOPRT (nu exista in POSIX) Daca ICANON i ECHO sunt de asemenea activate, caracterele sunt imprimate in timp ce sunt terse. [necesita _BSD_SOURCE sau _SVID_SOURCE] ECHOKE (nu exista in POSIX) Daca ICANON este de asemenea activat, KILL este reluat prin tergerea fiecarui caracter de pe linie, conform specificaiilor ECHOE i ECHOPRT. [necesita _BSD_SOURCE sau _SVID_SOURCE] DEFECHO (nu exista in POSIX) Echo numai atunci cand un proces citete. (Nu este implementat in Linux.) FLUSHO (nu exista in POSIX; nu este acceptat in Linux) Ieirea este eliminata. Acest fanion este activat prin tastarea caracterului DISCARD. [necesita _BSD_SOURCE sau _SVID_SOURCE] NOFLSH Dezactiveaza golirea cozilor de intrare i ieire la generarea semnalelor pentru caracterele INT, QUIT i SUSP. TOSTOP Trimite semnalul SIGTTOU catre grupul de procese al unui proces din fundal care incearca sa scrie la terminalul sau de control. PENDIN (nu exista in POSIX; nu este acceptat in Linux) Toate caracterele din coada de intrare sunt reimprimate atunci cand este citit urmatorul caracter. (bash(1) gestioneaza in acest fel ,,typeahead"). [necesita _BSD_SOURCE sau _SVID_SOURCE] IEXTEN Activeaza procesarea de intrare definita de implementare. Acest fanion, precum i ICANON trebuie sa fie activate pentru ca caracterele speciale EOL2, LNEXT, REPRINT, WERASE sa fie interpretate i pentru ca fanionul IUCLC sa fie eficient. Matricea c_cc definete caracterele speciale ale terminalului. Indicii simbolici (valorile iniiale) i semnificaia lor sunt: VDISCARD (nu exista in POSIX; nu este acceptat in Linux; 017, SI, Ctrl-O) Comuta: incepe/inceteaza sa elimine ieirea in ateptare. Recunoscut atunci cand IEXTEN este activat, iar apoi nu este transmis ca intrare. VDSUSP (nu exista in POSIX; nu este acceptat in Linux; 031, EM, Ctrl-Y) Caracter de suspendare intarziata (DSUSP): trimite semnalul SIGTSTP atunci cand caracterul este citit de programul utilizatorului. Recunoscut atunci cand IEXTEN i ISIG sunt activate, iar sistemul utilizeaza funcia de control al lucrarilor, iar apoi nu este transmis ca intrare. VEOF (004, EOT, Ctrl-D) Caracter de sfarit de fiier (EOF). Mai exact: acest caracter face ca memoria tampon tty in ateptare sa fie trimisa programului utilizator in ateptare, fara a atepta sfaritul de linie. Daca este primul caracter al liniei, read(2) din programul utilizator returneaza 0, ceea ce inseamna sfarit de fiier. Recunoscut atunci cand ICANON este activat, iar apoi nu este transmis ca intrare. VEOL (0, NUL) Caracter suplimentar de sfarit de linie (EOL). Recunoscut atunci cand ICANON este activat. VEOL2 (nu exista in POSIX; 0, NUL) Inca un caracter de sfarit de linie (EOL2). Recunoscut atunci cand 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 inca ters, dar nu terge dupa EOF sau inceputul de linie. Recunoscut atunci cand ICANON este activat, iar apoi nu este transmis ca intrare. VINTR (003, ETX, Ctrl-C, sau de asemenea 0177, DEL, rubout) Caracter de intrerupere (INTR). Trimite un semnal SIGINT. Recunoscut atunci cand 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 inceput de linie. Recunoscut atunci cand ICANON este activat, iar apoi nu este transmis ca intrare. VLNEXT (nu exista in POSIX; 026, SYN, Ctrl-V) Literal next (LNEXT). Introduce intre ghilimele urmatorul caracter de intrare, privandu-l de o posibila semnificaie speciala. Recunoscut atunci cand IEXTEN este activat, iar apoi nu este transmis ca intrare. VMIN Numarul minim de caractere pentru citirea noncanonica (MIN). VQUIT (034, FS, Ctrl-\) Caracter de ieire (QUIT). Trimite semnalul SIGQUIT. Recunoscut atunci cand ISIG este activat, iar apoi nu este transmis ca intrare. VREPRINT (nu exista in POSIX; 022, DC2, Ctrl-R) Reimprima caracterele necitite (REPRINT). Recunoscut atunci cand ICANON i IEXTEN sunt activate, iar apoi nu este transmis ca intrare. VSTART (021, DC1, Ctrl-Q) Caracter de pornire (START). Repornete ieirea oprita de caracterul Stop. Recunoscut atunci cand IXON este activat, iar apoi nu este transmis ca intrare. VSTATUS (nu exista in POSIX; nu este acceptat in Linux; cerere de stare: 024, DC4, Ctrl-T). Caracter de stare (STATUS). Afieaza informaii 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 in Linux) catre grupul de procese din prim-plan. VSTOP (023, DC3, Ctrl-S) Caracter de oprire (STOP). Oprete ieirea pana la tastarea caracterului Start. Recunoscut atunci cand IXON este activat, iar apoi nu este transmis ca intrare. VSUSP (032, SUB, Ctrl-Z) Caracter de suspendare (SUSP). Trimite semnalul SIGTSTP. Recunoscut atunci cand ISIG este activat, iar apoi nu este transmis ca intrare. VSWTCH (nu exista in POSIX; nu este acceptat in Linux; 0, NUL) Caracter de comutare (SWTCH). Utilizat in System V pentru a schimba shell-urile in shell layers, un predecesor al controlului lucrarilor shell. VTIME Timp de ateptare in zeci de secunde pentru citirea noncanonica (TIME). VWERASE (nu exista in POSIX; 027, ETB, Ctrl-W) terge cuvintele (WERASE). Recunoscut atunci cand 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 corespunzator la _POSIX_VDISABLE. Valorile sub-indicilor simbolici de mai sus sunt toate diferite, cu excepia faptului ca VTIME, VMIN pot avea aceeai valoare ca VEOL, respectiv VEOF. In modul noncanonic, semnificaia caracterului special este inlocuita cu semnificaia timpului de ateptare. Pentru o explicaie a VMIN i VTIME, consultai descrierea modului necanonic de mai jos. Preluarea i modificarea configurarilor terminalului tcgetattr() obine parametrii asociai obiectului la care se face referire prin fd i ii stocheaza in structura termios la care se face referire prin termios_p. Aceasta funcie poate fi invocata dintr-un proces din fundal; cu toate acestea, atributele terminalului pot fi modificate ulterior de un proces din prim-plan. tcsetattr() stabilete parametrii asociai terminalului (cu excepia cazului in care este necesar un suport din partea hardware-ului de baza care nu este disponibil) din structura termios la care se face referire prin termios_p. optional_actions specifica momentul in care modificarile intra in vigoare: TCSANOW schimbarea are loc imediat. TCSADRAIN modificarea are loc dupa ce toate ieirile scrise in fd au fost transmise. Aceasta opiune trebuie utilizata atunci cand se modifica parametrii care afecteaza ieirea. TCSAFLUSH modificarea are loc dupa ce toate ieirile scrise la obiectul la care se refera fd au fost transmise, iar toate intrarile care au fost primite, dar nu citite, vor fi eliminate inainte de efectuarea modificarii. Modul canonic i necanonic Activarea fanionului canonic ICANON in c_lflag determina daca terminalul funcioneaza in mod canonic (ICANON activat) sau in mod necanonic (ICANON dezactivat). In mod implicit, ICANON este activat. In modul canonic: o Intrarea este disponibila linie cu linie. O linie de intrare este disponibila atunci cand este tastat unul dintre delimitatorii de linie (NL, EOL, EOL2; sau EOF la inceputul liniei). Cu excepia cazului EOF, delimitatorul de linie este inclus in tamponul returnat de read(2). o Editarea liniilor este activata (ERASE, KILL; i daca fanionul IEXTEN este activat: WERASE, REPRINT, LNEXT). Un apel read(2) returneaza cel mult o linie de intrare; daca apelul read(2) a solicitat mai puini octei decat sunt disponibili in linia curenta de intrare, atunci sunt citii doar ataia octei cai au fost solicitai, iar caracterele ramase vor fi disponibile pentru un viitor apel read(2). o Lungimea maxima a liniei este de 4096 de caractere (inclusiv caracterul de sfarit de linie noua); liniile mai lungi de 4096 de caractere sunt trunchiate. Dupa 4095 de caractere, procesarea intrarii (de exemplu, procesarea ISIG i ECHO*) continua, dar orice date de intrare dupa 4095 de caractere pana la (dar fara a include) orice linie noua de terminare sunt eliminate. Acest lucru asigura faptul ca terminalul poate primi intotdeauna mai multe date de intrare pana cand cel puin o linie poate fi citita. In modul necanonic, intrarea este disponibila imediat (fara ca utilizatorul sa fie nevoit sa tasteze un caracter de delimitare a liniei), nu se efectueaza nicio prelucrare a intrarii, iar editarea liniei este dezactivata. Tamponul de citire va accepta numai 4095 de caractere; acest lucru asigura spaiul necesar pentru un caracter de linie noua in cazul in care modul de intrare este comutat la modul canonic. Valorile MIN (c_cc[VMIN]) i TIME (c_cc[VTIME]) determina circumstanele in care se finalizeaza un read(2); exista patru cazuri distincte: MIN == 0, TIME == 0 (sondarea citirii) Daca datele sunt disponibile, read(2) returneaza imediat, cu cel mai mic dintre numarul de octei disponibili sau numarul de octei solicitai. Daca nu exista date disponibile, read(2) returneaza 0. MIN > 0, TIME == 0 (blocarea citirii) read(2) blocheaza pana cand sunt disponibili MIN octei i returneaza pana la numarul de octei solicitat. MIN == 0, TIME > 0 (citire cu timp limita) TIME specifica limita pentru un temporizator in zecimi de secunda. Temporizatorul este pornit atunci cand este apelat read(2). read(2) returneaza fie atunci cand cel puin un octet de date este disponibil, fie atunci cand temporizatorul expira. In cazul in care temporizatorul expira fara ca vreo intrare sa devina disponibila, read(2) returneaza 0. In cazul in care datele sunt deja disponibile in momentul apelului la read(2), apelul se comporta ca i cum datele ar fi fost primite imediat dupa apel. MIN > 0, TIME > 0 (citire cu timp de ateptare intre octei) TIME specifica limita pentru un temporizator in zecimi de secunda. Odata ce un octet iniial de intrare devine disponibil, temporizatorul este repornit dupa primirea fiecarui alt octet. read(2) revine atunci cand este indeplinita oricare dintre urmatoarele condiii: o Au fost primii MIN octei. o Timpul de ateptare intre octei expira. o Numarul de octei solicitat de read(2) a fost primit. (POSIX nu specifica aceasta condiie de terminare, iar pe unele alte implementari read(2) nu returneaza in acest caz). Deoarece temporizatorul este pornit numai dupa ce octetul iniial devine disponibil, cel puin un octet va fi citit. Daca datele sunt deja disponibile la momentul apelului la read(2), apelul se comporta ca i cum datele ar fi fost primite imediat dupa apel. POSIX nu specifica daca valoarea faniomului de stare a fiierului O_NONBLOCK are prioritate faa de valorile MIN i TIME. Daca O_NONBLOCK este activat, un read(2) in modul necanonic poate reveni imediat, indiferent de valoarea MIN sau TIME. In plus, daca nu exista date disponibile, POSIX permite ca un read(2) in mod necanonic sa returneze fie 0, fie -1 cu errno fixata la EAGAIN. Modul brut cfmakeraw() configureaza terminalul intr-un mod asemanator modului ,,raw" (brut) al vechiului controlor de terminal Versiunea 7: intrarea este disponibila caracter cu caracter, ecoul este dezactivat i toate procesarile speciale ale caracterelor de intrare i ieire ale terminalului sunt dezactivate. Atributele terminalului sunt configurate dupa cum urmeaza: 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 bii cu valoare zero pentru o anumita durata, daca terminalul utilizeaza transmiterea asincrona de date seriale. Daca duration este zero, aceasta transmite bii cu valoare zero timp de cel puin 0,25 secunde i nu mai mult de 0,5 secunde. Daca duration nu este zero, aceasta transmite bii cu valoare zero pentru o anumita perioada de timp definita de implementare. Daca terminalul nu utilizeaza transmiterea asincrona de date seriale, tcsendbreak() revine fara a intreprinde nicio aciune. tcdrain() ateapta pana cand toate ieirile scrise in obiectul la care face referire fd au fost transmise. tcflush() elimina datele scrise in obiectul la care se refera fd, dar care nu au fost transmise, sau datele primite, dar care nu au fost citite, in funcie de valoarea lui queue_selector: TCIFLUSH terge datele primite, dar necitite. TCOFLUSH terge datele scrise, dar care nu au fost transmise. TCIOFLUSH terge atat datele primite, dar care nu au fost citite, cat i datele scrise, dar care nu au fost transmise. tcflow() suspenda transmiterea sau recepia de date pe obiectul la care se refera fd, in funcie de valoarea lui action: TCOOFF suspenda ieirea. TCOON repornete ieirea suspendata. TCIOFF transmite un caracter STOP, care oprete dispozitivul de terminal de la transmiterea de date catre sistem. TCION transmite un caracter START, care pornete dispozitivul de terminal sa transmita date catre sistem. In mod implicit, la deschiderea unui fiier terminal, nici intrarea, nici ieirea acestuia nu sunt suspendate. Viteza liniei Funciile privind viteza baud sunt furnizate pentru obinerea i definirea valorilor vitezelor baud de intrare i ieire in structura termios. Noile valori nu intra in vigoare pana cand tcsetattr() nu este apelat cu succes. Stabilirea vitezei la B0 instruiete modemul sa ,,inchida". Viteza reala de bii corespunzatoare lui B38400 poate fi modificata cu setserial(8). Vitezele in baud de intrare i de ieire sunt stocate in structura termios. cfgetospeed() returneaza viteza baud de ieire stocata in structura termios indicata de termios_p. cfsetospeed() stabilete rata de baud de ieire stocata in structura termios indicata de termios_p la speed, care trebuie sa 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 Datorita diferenelor dintre arhitecturi, aplicaiile portabile trebuie sa verifice daca o anumita constanta Bnnn este definita inainte de a o utiliza. Viteza de baud zero, B0, este utilizata pentru a incheia conexiunea. Daca B0 este specificat, liniile de control ale modemului nu vor mai fi asertate. In mod normal, acest lucru va deconecta linia. CBAUDEX este o masca pentru vitezele dincolo de cele definite in POSIX.1 (57600 i peste). Astfel, B57600 & CBAUDEX este diferita de zero. Stabilirea vitezei de baud la o alta valoare decat cele definite de constantele Bnnn este posibila prin ioctl-ul TCSETS2; consultai ioctl_tty(2). cfgetispeed() returneaza viteza baud de intrare stocata in structura termios. cfsetispeed() stabilete viteza de baud de intrare stocata in structura termios la speed, care trebuie specificata ca una dintre constantele Bnnn enumerate mai sus pentru cfsetospeed(). Daca viteza de baud de intrare este definita la constanta literala 0 (nu la constanta simbolica B0), viteza de baud de intrare va fi egala cu viteza de baud de ieire. cfsetspeed() este o extensie 4.4BSD. Aceasta preia aceleai argumente ca i cfsetispeed() i stabilete atat viteza de intrare, cat i cea de ieire. VALOAREA RETURNATA cfgetispeed() returneaza viteza baud de intrare stocata in structura termios. cfgetospeed() returneaza viteza de baud de ieire stocata in structura termios. Toate celelalte funcii returneaza: 0 in caz de succes. -1 Toate celelalte funcii returneaza: in caz de eec i configureaza errno pentru a indica eroarea. Reinei ca tcsetattr() returneaza rezultatul cu succes daca oricare dintre modificarile solicitate au putut fi efectuate cu succes. Prin urmare, atunci cand se fac mai multe modificari, poate fi necesar sa se faca un apel ulterior la tcgetattr() pentru a verifica daca toate modificarile au fost efectuate cu succes. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |tcgetattr(), tcsetattr(), tcdrain(), | Sigurana firelor | MT-Safe | |tcflush(), tcflow(), 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 lista de viteze in baud unde dupa valorile B0 pana la B9600 se gasesc cele doua constante EXTA, EXTB (,,Extern A" i ,,Extern B"). Multe sisteme extind lista cu viteze in baud mult mai mari. Efectul unei durate duration diferite de zero cu tcsendbreak() variaza. SunOS specifica o pauza de duration * N secunde, unde N este cel puin 0,25 i nu mai mult de 0,5. Linux, AIX, DU, Tru64 trimit o pauza de duration milisecunde. FreeBSD i NetBSD i HP-UX i MacOS ignora valoarea lui duration. Sub Solaris i UnixWare, tcsendbreak() cu duration diferita de zero se comporta ca tcdrain(). ERORI Pe arhitectura Alpha inainte de Linux 4.16 (i glibc inainte de glibc 2.28), valoarea XTABS a fost diferita de TAB3 i a fost ignorata de codul de disciplina al liniei N_TTY a controlorului de terminal ca rezultat (deoarece nu a facut parte din masca TABDLY). CONSULTAI 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 in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.15 17 mai 2025 termios(3)