Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


tcsetattr(3p) — Linux manual page

PROLOG |NAME |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |EXAMPLES |APPLICATION USAGE |RATIONALE |FUTURE DIRECTIONS |SEE ALSO |COPYRIGHT

TCSETATTR(3P)           POSIX Programmer's ManualTCSETATTR(3P)

PROLOG        top

       This manual page is part of the POSIX Programmer's Manual.  The       Linux implementation of this interface may differ (consult the       corresponding Linux manual page for details of Linux behavior), or       the interface may not be implemented on Linux.

NAME        top

       tcsetattr — set the parameters associated with the terminal

SYNOPSIS        top

       #include <termios.h>       int tcsetattr(intfildes, intoptional_actions,           const struct termios *termios_p);

DESCRIPTION        top

       Thetcsetattr() function shall set the parameters associated with       the terminal referred to by the open file descriptorfildes (an       open file descriptor associated with a terminal) from thetermios       structure referenced bytermios_p as follows:        *  Ifoptional_actions is TCSANOW, the change shall occur           immediately.        *  Ifoptional_actions is TCSADRAIN, the change shall occur after           all output written tofildes is transmitted. This function           should be used when changing parameters that affect output.        *  Ifoptional_actions is TCSAFLUSH, the change shall occur after           all output written tofildes is transmitted, and all input so           far received but not read shall be discarded before the change           is made.       If the output baud rate stored in thetermiosstructure pointed to       bytermios_p is the zero baud rate, B0, the modem control lines       shall no longer be asserted. Normally, this shall disconnect the       line.       If the input baud rate stored in thetermiosstructure pointed to       bytermios_p is 0, the input baud rate given to the hardware is       the same as the output baud rate stored in thetermiosstructure.       Thetcsetattr() function shall return successfully if it was able       to perform any of the requested actions, even if some of the       requested actions could not be performed. It shall set all the       attributes that the implementation supports as requested and leave       all the attributes not supported by the implementation unchanged.       If no part of the request can be honored, it shall return -1 and       seterrno to[EINVAL].  If the input and output baud rates differ       and are a combination that is not supported, neither baud rate       shall be changed. A subsequent call totcgetattr() shall return       the actual state of the terminal device (reflecting both the       changes made and not made in the previoustcsetattr() call). Thetcsetattr() function shall not change the values found in thetermiosstructure under any circumstances.       The effect oftcsetattr() is undefined if the value of thetermios       structure pointed to bytermios_p was not derived from the result       of a call totcgetattr() onfildes; an application should modify       only fields and flags defined by this volume of POSIX.1‐2017       between the call totcgetattr() andtcsetattr(), leaving all other       fields and flags unmodified.       No actions defined by this volume of POSIX.1‐2017, other than a       call totcsetattr(), a close of the last file descriptor in the       system associated with this terminal device, or an open of the       first file descriptor in the system associated with this terminal       device (using the O_TTY_INIT flag if it is non-zero and the device       is not a pseudo-terminal), shall cause any of the terminal       attributes defined by this volume of POSIX.1‐2017 to change.       Iftcsetattr() is called from a process which is a member of a       background process group on afildes associated with its       controlling terminal:        *  If the calling thread is blocking SIGTTOU signals or the           process is ignoring SIGTTOU signals, the operation completes           normally and no signal is sent.        *  Otherwise, a SIGTTOU signal shall be sent to the process           group.

RETURN VALUE        top

       Upon successful completion, 0 shall be returned. Otherwise, -1       shall be returned anderrno set to indicate the error.

ERRORS        top

       Thetcsetattr() function shall fail if:EBADFThefildes argument is not a valid file descriptor.EINTRA signal interruptedtcsetattr().EINVALTheoptional_actions argument is not a supported value, or              an attempt was made to change an attribute represented in              thetermiosstructure to an unsupported value.EIOThe process group of the writing process is orphaned, the              calling thread is not blocking SIGTTOU, and the process is              not ignoring SIGTTOU.ENOTTYThe file associated withfildes is not a terminal.The following sections are informative.

EXAMPLES        top

       None.

APPLICATION USAGE        top

       If trying to change baud rates, applications should calltcsetattr() then calltcgetattr() in order to determine what baud       rates were actually selected.       In general, there are two reasons for an application to change the       parameters associated with a terminal device:        1. The device already has working parameter settings but the           application needs a different behavior, such as non-canonical           mode instead of canonical mode. The application sets (or           clears) only a few flags orc_cc[] values. Typically, the           terminal device in this case is either the controlling           terminal for the process or a pseudo-terminal.        2. The device is a modem or similar piece of equipment connected           by a serial line, and it was not open before the application           opened it. In this case, the application needs to initialize           all of the parameter settings ``from scratch''. However, since           thetermiosstructure may include both standard and non-           standard parameters, the application cannot just initialize           the whole structure in an arbitrary way (e.g., usingmemset())           as this may cause some of the non-standard parameters to be           set incorrectly, resulting in non-conforming behavior of the           terminal device. Conversely, the application cannot just set           the standard parameters, assuming that the non-standard           parameters will already have suitable values, as the device           might previously have been used with non-conforming parameter           settings (and some implementations retain the settings from           one use to the next). The solution is to open the terminal           device using the O_TTY_INIT flag to initialize the terminal           device to have conforming parameter settings, obtain those           settings usingtcgetattr(), and then set all of the standard           parameters to the desired settings.

RATIONALE        top

       Thetcsetattr() function can be interrupted in the following       situations:        *  It is interrupted while waiting for output to drain.        *  It is called from a process in a background process group and           SIGTTOU is caught.       See also the RATIONALE section intcgetattr(3p).

FUTURE DIRECTIONS        top

       Using an input baud rate of 0 to set the input rate equal to the       output rate may not necessarily be supported in a future version       of this volume of POSIX.1‐2017.

SEE ALSO        top

cfgetispeed(3p),tcgetattr(3p)       The Base Definitions volume of POSIX.1‐2017,Chapter 11,GeneralTerminal Interface,termios.h(0p)

COPYRIGHT        top

       Portions of this text are reprinted and reproduced in electronic       form from IEEE Std 1003.1-2017, Standard for Information       Technology -- Portable Operating System Interface (POSIX), The       Open Group Base Specifications Issue 7, 2018 Edition, Copyright       (C) 2018 by the Institute of Electrical and Electronics Engineers,       Inc and The Open Group.  In the event of any discrepancy between       this version and the original IEEE and The Open Group Standard,       the original IEEE and The Open Group Standard is the referee       document. The original Standard can be obtained online athttp://www.opengroup.org/unix/online.html .       Any typographical or formatting errors that appear in this page       are most likely to have been introduced during the conversion of       the source files to man page format. To report such errors, seehttps://www.kernel.org/doc/man-pages/reporting_bugs.html .IEEE/The Open Group                2017TCSETATTR(3P)

Pages that refer to this page:termios.h(0p)cfsetispeed(3p)cfsetospeed(3p)tcgetattr(3p)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp