.\" Hey Emacs! This file is -*- nroff -*- source. .\" .\" Copyright (c) 1993 Michael Haardt .\" (michael@moria.de) .\" Fri Apr 2 11:32:09 MET DST 1993 .\" .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, write to the Free .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, .\" USA. .\" .\" Modified Sat Jul 24 15:37:39 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified Sat Feb 25 18:17:14 1995 by Jim Van Zandt .\" Modified Sat Sep 2 22:33:09 1995 by Jim Van Zandt .\" moved to man3, aeb, 950919 .\" .TH TERMIOS 3 "2 de setembro de 1995" "Linux" "Manual do Programador Linux" .SH NOME termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, tcgetpgrp, tcsetpgrp \- obtém e seta atributos de terminal, controle de linha, obtém e seta taxa de bauds, obtém e seta o ID de grupos de processos em primeiro plano .SH SINOPSE .ad l .ft B #include .br #include .sp .BI "int tcgetattr ( int " fd ", struct termios *" termios_p " );" .sp .BI "int tcsetattr ( int " fd ", int " optional_actions ", struct termios *" termios_p " );" .sp .BI "int tcsendbreak ( int " fd ", int " duration " );" .sp .BI "int tcdrain ( int " fd " );" .sp .BI "int tcflush ( int " fd ", int " queue_selector " );" .sp .BI "int tcflow ( int " fd ", int " action " );" .sp .BI "int cfmakeraw ( struct termios *" termios_p " );" .sp .BI "speed_t cfgetospeed ( struct termios *" termios_p " );" .sp .BI "int cfsetospeed ( struct termios *" termios_p ", speed_t " speed " );" .sp .BI "speed_t cfgetispeed ( struct termios *" termios_p " );" .sp .BI "int cfsetispeed ( struct termios *" termios_p ", speed_t " speed " );" .sp .BI "pid_t tcgetpgrp ( int " fd " );" .sp .BI "int tcsetpgrp ( int " fd ", pid_t " pgrpid " );" .ft P .ad b .SH DESCRIÇÃO As funções termios descrevem uma interface de terminal geral que é fornecida para controlar portas de comunicação assíncronas. .LP Muitas das funções descritas aqui têm um argumento \fItermios_p\fP que é um ponteiro para uma estrutura \fBtermios\fP. Esta estrutura contém os seguintes membros: .ne 9 .sp .RS .nf tcflag_t \fIc_iflag\fP; /* modos de entrada */ tcflag_t \fIc_oflag\fP; /* modos de saída */ tcflag_t \fIc_cflag\fP; /* modos de controle */ tcflag_t \fIc_lflag\fP; /* modos locais */ cc_t \fIc_cc\fP[\fBNCCS\fP]; /* caracteres de controle */ .RE .sp .fi .PP constantes de flag \fIc_iflag\fP: .IP \fBIGNBRK\fP ignora condições de BREAK na entrada .IP \fBBRKINT\fP Se \fBIGNBRK\fP não estiver setado, gera \fBSIGINT\fP na condição de BREAK, senão lê o BREAK como o caractere \\0. .IP \fBIGNPAR\fP ignora erros de enquadramento e paridade. .IP \fBPARMRK\fP se \fBIGNPAR\fP não estiver setado, prefixa um caractere com um erro de paridade ou um erro de enquadramento com \\377 \\0. Se nem \fBIGNPAR\fP nem \fBPARMRK\fP são setados, lê um caractere com um erro de paridade ou enquadramento como \\0. .IP \fBINPCK\fP habilita verificação de paridade na entrada .IP \fBISTRIP\fP corta o oitavo bit .IP \fBINLCR\fP traduz NL para CR na entrada .IP \fBIGNCR\fP ignora retorno de carro na entrada .IP \fBICRNL\fP traduz retorno de carro para nova linha na entrada (a menos que \fBIGNCR\fP seja setado) .IP \fBIUCLC\fP mapeia caracteres maiúsculos para minúsculos na entrada .IP \fBIXON\fP habilita controle de fluxo XON/XOFF na entrada .IP \fBIXANY\fP habilita qualquer caractere para reiniciar saída .IP \fBIXOFF\fP habilita controle de fluxo XON/XOFF na entrada .IP \fBIMAXBEL\fP aciona sinal sonoro quando a fila está cheia .PP contantes de flag \fIc_oflag\fP: .IP \fBOPOST\fP habilita processamento de saída definida pela implementação .IP \fBOLCUC\fP mapeia caracteres minúsculos para maiúsculos na saída .IP \fBONLCR\fP mapeia NL para CR-NL na saída .IP \fBOCRNL\fP mapeia CR para NL na saída .IP \fBONOCR\fP não envia CR na coluna 0 .IP \fBONLRET\fP não envia CR .IP \fBOFILL\fP envia caracteres de preenchimento para um atraso, em vez de usar um atraso por tempo .IP \fBOFDEL\fP caractere de preenchimento é o ASCII DEL. Se não setado, o caractere de preenchimento é o ASCII NUL .IP \fBNLDLY\fP máscara de atraso de nova linha. Valores são \fBNL0\fP e \fBNL1\fP. .IP \fBCRDLY\fP máscara de atraso de retorno de carro. Valores são \fBCR0\fP, \fBCR1\fP, \fBCR2\fP, ou \fBCR3\fP. .IP \fBTABDLY\fP máscara de atraso de tabulação horizontal. Valores são \fBTAB0\fP, \fBTAB1\fP, \fBTAB2\fP, \fBTAB3\fP, ou \fBXTABS\fP. Um valor de XTABS expande tabulações para espaços (com paradas de tabulação a cada oito colunas). .IP \fBBSDLY\fP máscara de atraso de 'backspace'. Valores são \fBBS0\fP ou \fBBS1\fP. .IP \fBVTDLY\fP máscara de atraso de tabulação vertical. Valores são \fBVT0\fP ou \fBVT1\fP. .IP \fBFFDLY\fP máscara de atraso de alimentação de formulário. Valores são \fBFF0\fP ou \fBFF1\fP. .PP constantes de flag \fIc_cflag\fP: .IP \fBCSIZE\fP máscara de tamanho de caractere. Valores são \fBCS5\fP, \fBCS6\fP, \fBCS7\fP, ou \fBCS8\fP. .IP \fBCSTOPB\fP seta dois bits de parada, em vez de um. .IP \fBCREAD\fP habilita receptor. .IP \fBPARENB\fP habilita geração de paridade na saída e verificação de paridade para a entrada. .IP \fBPARODD\fP paridade para entrada e saída é ímpar. .IP \fBHUPCL\fP linhas de controle de modem mais baixas depois que o último processo fecha o dispositivo (põe no gancho). .IP \fBCLOCAL\fP ignora linhas de controe do modem .IP \fBCIBAUD\fP máscaras para velocidades de entrada (não usados). .IP \fBCRTSCTS\fP controle de fluxo. .PP constantes de flag \fIc_lflag\fP: .IP \fBISIG\fP quando qualquer um dos caracteres INTR, QUIT, SUSP, ou DSUSP são recebidos, gera o sinal correspondente. .IP \fBICANON\fP habilita modo canônico. Isto habilita os caracteres especiais EOF, EOL, EOL2, ERASE, KILL, REPRINT, STATUS, e WERASE, e armazena por linha. .IP \fBXCASE\fP se \fBICANON\fP também é setado, o terminal é somente maiúsculo. A entrada é convertida para minúsculas, exceto para caracteres precedidos por \\. Na saída, caracteres maiúsculos são precedidos por \\ e caracteres minúsculos são convertidos para maiúsculos. .IP \fBECHO\fP ecoa caracteres de entrada. .IP \fBECHOE\fP se \fBICANON\fP também é setado, o caractere ERASE apaga o caractere de entrada precedente, e WERASE apaga a palavra precedente. .IP \fBECHOK\fP se \fBICANON\fP também é setado, o caractere KILL apaga a linha corrente. .IP \fBECHONL\fP se \fBICANON\fP também é setado, ecoa o caractere NL mesmo se ECHO não está setado. .IP \fBECHOCTL\fP se \fBECHO\fP também é setado, os sinais de controle ASCII diferentes de TAB, NL, START, e STOP são ecoados no formato ^X, onde X é o caractere com código ASCII 0x40 maior que o sinal de controle. Por exemplo, o caractere 0x08 (BS) é ecoado como ^H. .IP \fBECHOPRT\fP se \fBICANON\fP e \fBIECHO\fP também são setados, os caracteres são impressos conforme eles estão sendo apagados. .IP \fBECHOKE\fP se \fBICANON\fP também é setado, KILL é ecoado pelo apagamento de cada caractere na linha, como especificado por \fBECHOE\fP e \fBECHOPRT\fP. .IP \fBFLUSHO\fP saída está sendo esvaziada. Este flag é invertido pela digitação do caractere DISCARD. .IP \fBNOFLSH\fP desabilita o esvaziamento das filas de entrada e saída quando são gerados os sinais SIGINT e SIGQUIT, e o esvaziamento da fila de entrada quando é gerado o sinal SIGSUSP. .IP \fBTOSTOP\fP envia o sinal SIGTTOU para o grupo de processo de um processo em segundo plano que tenta escrever no seu terminal de controle. .IP \fBPENDIN\fP todos os caracteres na fila de entrada são reimpressos quando o próximo caractere é lido. (\fBbash\fP manipula o buffer de teclado desta forma.) .IP \fBIEXTEN\fP habilita processamento de entrada definida por implementação. .PP .B tcgetattr() obtém os parâmetros associados com o objeto referido por \fIfd\fP e armazena-os na estrutura \fBtermios\fP referenciada por \fItermios_p\fP. Esta função pode ser invocada por um processo em segundo plano; porém, os atributos do terminal podem ser alterados subsequentemente por um processo em primeiro plano. .LP .B tcsetattr() seta os parâmetros associados com o terminal (a menos que o suporte seja requerido por parte do hardware base que não está disponível) a partir da estrutura \fBtermios\fP referida por \fItermios_p\fP. \fIoptional_actions\fP especifica quando as alterações têm efeito: .IP \fBTCSANOW\fP a mudança ocorre imediatamente. .IP \fBTCSADRAIN\fP a mudança ocorre depois de todas as saídas escritas em .I fd terem sido transmitidas. Esta função deve ser usada ao alterar parâmetros que afetam a saída. .IP \fBTCSAFLUSH\fP a mudança ocorre depois que todas as saídas escritas no objeto referenciado por .I fd foram transmitidas, e todas as entradas foram recebidas mas não lidas serão descartadas antes que a mudança seja feita. .LP .B tcsendbreak() transmite um fluxo contínuo de bits com valor zero de duração específica, se o terminal estiver usando transmissão assíncrona de dados seriais. Se a \fIduração\fP é zero, ele transmite bits de valor zero por pelo menos 0,25 segundos, e não mais que 0,5 segundos. Se a \fIduração\fP não é zero, ele envia bits de valor zero por .IB duration * N segundos, onde \fIN\fP é pelo menos 0,25, e não mais que 0,5. .LP Se o terminal não está usando transmissão assíncrona de dados seriais, \fBtcsendbreak()\fP retorna sem realizar nenhuma ação. .LP .B tcdrain() espera até que toda a saída escrita para o objeto referido por .I fd tenha sido transmitida. .LP .B tcflush() descarta dados escritos para o objeto referido por .I fd mas não transmitidos, ou dados recebidos mas não lidos, dependendo do valor de .IR queue_selector : .IP \fBTCIFLUSH\fP esvazia os dados recebidos mas não lidos. .IP \fBTCOFLUSH\fP esvazi os dados escritos mas não transmitidos. .IP \fBTCIOFLUSH\fP esvazia os dados recebidos mas não lidos, e os dados escritos mas não transmitidos. .LP .B tcflow() suspende a transmissão ou a recepção de dados no objeto referido por .IR fd , dependendo do valor da .IR ação : .IP \fBTCOOFF\fP suspende saída. .IP \fBTCOON\fP reinicia saída suspensa. .IP \fBTCIOFF\fP transmite um caractere STOP, que pára a transmissão de dados do dispositivo de terminal para o sistema. .IP \fBTCION\fP transmite um caractere START, que inicia a transmissão de dados do dispositivo de terminal para o sistema. .LP O padrão na abertura de um arquivo de terminal é que nem a entrada e nem a saída são suspensas. .LP As funções de taxa de bauds são fornecidas para obter e setar os valores das taxas de bauds de entrada e saída na estrutura \fBtermios\fP. Os novos valores não têm efeito até que \fBtcsetattr()\fP seja chamado com sucesso. Configurar a velocidade para \fBB0\fP instrui o modem para "pôr no gancho". A taxa de bits atual correspondente a \fBB38400\fP pode ser alterada com \fBsetserial\fP(8). .LP As taxas de bauds de entrada e saída são armazenadas na estrutura \fBtermios\fP. .LP \fBcfmakeraw\fP seta os atributos do terminal como segue: .nf 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; .fi .LP .B cfgetospeed() retorna a taxa de bauds de saída armazenadas na estrutura \fBtermios\fP apontada por .IR termios_p . .LP .B cfsetospeed() seta a taxa de bauds de saída armazenada na estrutura \fBtermios\fP apontada por \fItermios_p\fP para \fIspeed\fP, que precisa ser uma dessas constantes: .nf .ft B B0 B50 B75 B110 B134 B150 B200 B300 B600 B1200 B1800 B2400 B4800 B9600 B19200 B38400 B57600 B115200 B230400 .ft P .fi A taxa de bauds zero, \fBB0\fP, é usada para terminar a conexão. Se B0 é especificado, as linhas de controle do modem não serão mais confirmados. Normalmente, isto desconectará a linha. \fBCBAUDEX\fP é uma máscara para as velocidades além daquelas definidas em POSIX.1 (57600 e acima). Portanto, \fBB57600\fP & \fBCBAUDEX\fP é diferente de zero. .LP .B cfgetispeed() retorna a taxa de bauds da entrada armazenada na estrutura \fBtermios\fP. .LP .B cfsetispeed() seta a taxa de bauds de entrada armazenada na estrutura \fBtermios\fP para .IR velocidade. Se a taxa de bauds da entrada é setada para zero, a taxa de bauds da entrada será igual à taxa de bauds da saída. .LP .B tcgetpgrp() retorna o ID do grupo de processo de um grupo de processo em primeiro plano, ou -1 em caso de erro. .LP .B tcsetpgrp() seta o ID de grupo de processo para \fIpgrpid\fP. \fIpgrpid\fP precisa ser o ID de um grupo de processo na mesma sessão. .SH "VALORES DE RETORNO" .LP .B cfgetispeed() retorna a taxa de bauds de entrada armazenada na estrutura \fBtermios\fP. .LP .B cfgetospeed() retorna a taxa de bauds de saída armazenada na estrutura \fBtermios\fP. .LP .B tcgetpgrp() retorna o ID do grupo de processo de um grupo de processo em primeiro plano, ou -1 em caso de erro. .LP Todas as outras funções retornam: .IP 0 em caso de sucesso. .IP -1 em caso de falha e seta .I errno para indicar o erro. .SH "VEJA TAMBÉM" \fBsetserial\fP(8) .SH TRADUÇÃO PARA A LÍNGUA PORTUGUESA \&\fR\&\f(CWRUBENS DE JESUS NOGUEIRA (tradução)\fR \&\fR\&\f(CWXXXXXX XX XXXXX XXXXXXXX (revisão)\fR