xref: /freebsd/share/man/man4/termios.4 (revision f05cddf9)
1.\" Copyright (c) 1991, 1992, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. All advertising materials mentioning features or use of this software
13.\"    must display the following acknowledgement:
14.\"	This product includes software developed by the University of
15.\"	California, Berkeley and its contributors.
16.\" 4. Neither the name of the University nor the names of its contributors
17.\"    may be used to endorse or promote products derived from this software
18.\"    without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\"	@(#)termios.4	8.4 (Berkeley) 4/19/94
33.\" $FreeBSD$
34.\"
35.Dd December 26, 2009
36.Dt TERMIOS 4
37.Os
38.Sh NAME
39.Nm termios
40.Nd general terminal line discipline
41.Sh SYNOPSIS
42.In termios.h
43.Sh DESCRIPTION
44This describes a general terminal line discipline that is
45supported on tty asynchronous communication ports.
46.Ss Opening a Terminal Device File
47When a terminal file is opened, it normally causes the process to wait
48until a connection is established.
49For most hardware, the presence
50of a connection is indicated by the assertion of the hardware
51.Dv CARRIER
52line.
53If the termios structure associated with the terminal file has the
54.Dv CLOCAL
55flag set in the cflag, or if the
56.Dv O_NONBLOCK
57flag is set
58in the
59.Xr open 2
60call, then the open will succeed even without
61a connection being present.
62In practice, applications
63seldom open these files; they are opened by special programs, such
64as
65.Xr getty 8
66or
67.Xr rlogind 8 ,
68and become
69an application's standard input, output, and error files.
70.Ss Job Control in a Nutshell
71Every process is associated with a particular process group and session.
72The grouping is hierarchical: every member of a particular process group is a
73member of the same session.
74This structuring is used in managing groups
75of related processes for purposes of
76.\" .Gw "job control" ;
77.Em "job control" ;
78that is, the
79ability from the keyboard (or from program control) to simultaneously
80stop or restart
81a complex command (a command composed of one or more related
82processes).
83The grouping into process groups allows delivering
84of signals that stop or start the group as a whole, along with
85arbitrating which process group has access to the single controlling
86terminal.
87The grouping at a higher layer into sessions is to restrict
88the job control related signals and system calls to within processes
89resulting from a particular instance of a
90.Dq login .
91Typically, a session
92is created when a user logs in, and the login terminal is setup
93to be the controlling terminal; all processes spawned from that
94login shell are in the same session, and inherit the controlling
95terminal.
96.Pp
97A job control shell
98operating interactively (that is, reading commands from a terminal)
99normally groups related processes together by placing them into the
100same process group.
101A set of processes in the same process group
102is collectively referred to as a
103.Dq job .
104When the foreground process
105group of the terminal is the same as the process group of a particular
106job, that job is said to be in the
107.Dq foreground .
108When the process group of the terminal is different from the process group of
109a job (but is still the controlling terminal), that job is said
110to be in the
111.Dq background .
112Normally the
113shell reads a command and starts the job that implements that
114command.
115If the command is to be started in the foreground (typical), it
116sets the process group of the terminal to the process group
117of the started job, waits for the job to complete, and then
118sets the process group of the terminal back to its own process
119group (it puts itself into the foreground).
120If the job is to
121be started in the background (as denoted by the shell operator "&"),
122it never changes the process group of the terminal and does not
123wait for the job to complete (that is, it immediately attempts to read the next
124command).
125If the job is started in the foreground, the user may
126type a key (usually
127.Ql \&^Z )
128which generates the terminal stop signal
129.Pq Dv SIGTSTP
130and has the effect of stopping the entire job.
131The shell will notice that the job stopped, and will resume running after
132placing itself in the foreground.
133The shell also has commands for placing stopped jobs in the background,
134and for placing stopped or background jobs into the foreground.
135.Ss Orphaned Process Groups
136An orphaned process group is a process group that has no process
137whose parent is in a different process group, yet is in the same
138session.
139Conceptually it means a process group that does not have
140a parent that could do anything if it were to be stopped.
141For example,
142the initial login shell is typically in an orphaned process group.
143Orphaned process groups are immune to keyboard generated stop
144signals and job control signals resulting from reads or writes to the
145controlling terminal.
146.Ss The Controlling Terminal
147A terminal may belong to a process as its controlling terminal.
148Each
149process of a session that has a controlling terminal has the same
150controlling terminal.
151A terminal may be the controlling terminal for at
152most one session.
153The controlling terminal for a session is allocated by
154the session leader by issuing the
155.Dv TIOCSCTTY
156ioctl.
157A controlling terminal
158is never acquired by merely opening a terminal device file.
159When a controlling terminal becomes
160associated with a session, its foreground process group is set to
161the process group of the session leader.
162.Pp
163The controlling terminal is inherited by a child process during a
164.Xr fork 2
165function call.
166A process relinquishes its controlling terminal when it
167creates a new session with the
168.Xr setsid 2
169function; other processes
170remaining in the old session that had this terminal as their controlling
171terminal continue to have it.
172A process does not relinquish its
173controlling terminal simply by closing all of its file descriptors
174associated with the controlling terminal if other processes continue to
175have it open.
176.Pp
177When a controlling process terminates, the controlling terminal is
178disassociated from the current session, allowing it to be acquired by a
179new session leader.
180Subsequent access to the terminal by other processes
181in the earlier session will be denied, with attempts to access the
182terminal treated as if modem disconnect had been sensed.
183.Ss Terminal Access Control
184If a process is in the foreground process group of its controlling
185terminal, read operations are allowed.
186Any attempts by a process
187in a background process group to read from its controlling terminal
188causes a
189.Dv SIGTTIN
190signal to be sent to
191the process's group
192unless one of the
193following special cases apply: if the reading process is ignoring or
194blocking the
195.Dv SIGTTIN
196signal, or if the process group of the reading
197process is orphaned, the
198.Xr read 2
199returns -1 with
200.Va errno
201set to
202.Er EIO
203and no
204signal is sent.
205The default action of the
206.Dv SIGTTIN
207signal is to stop the
208process to which it is sent.
209.Pp
210If a process is in the foreground process group of its controlling
211terminal, write operations are allowed.
212Attempts by a process in a background process group to write to its
213controlling terminal will cause the process group to be sent a
214.Dv SIGTTOU
215signal unless one of the following special cases apply: if
216.Dv TOSTOP
217is not
218set, or if
219.Dv TOSTOP
220is set and the process is ignoring or blocking the
221.Dv SIGTTOU
222signal, the process is allowed to write to the terminal and the
223.Dv SIGTTOU
224signal is not sent.
225If
226.Dv TOSTOP
227is set, and the process group of
228the writing process is orphaned, and the writing process is not ignoring
229or blocking
230.Dv SIGTTOU ,
231the
232.Xr write 2
233returns -1 with
234errno set to
235.Er EIO
236and no signal is sent.
237.Pp
238Certain calls that set terminal parameters are treated in the same
239fashion as write, except that
240.Dv TOSTOP
241is ignored; that is, the effect is
242identical to that of terminal writes when
243.Dv TOSTOP
244is set.
245.Ss Input Processing and Reading Data
246A terminal device associated with a terminal device file may operate in
247full-duplex mode, so that data may arrive even while output is occurring.
248Each terminal device file has associated with it an input queue, into
249which incoming data is stored by the system before being read by a
250process.
251The system imposes a limit,
252.Pf \&{ Dv MAX_INPUT Ns \&} ,
253on the number of
254bytes that may be stored in the input queue.
255The behavior of the system
256when this limit is exceeded depends on the setting of the
257.Dv IMAXBEL
258flag in the termios
259.Fa c_iflag .
260If this flag is set, the terminal
261is sent an
262.Tn ASCII
263.Dv BEL
264character each time a character is received
265while the input queue is full.
266Otherwise, the input queue is flushed upon receiving the character.
267.Pp
268Two general kinds of input processing are available, determined by
269whether the terminal device file is in canonical mode or noncanonical
270mode.
271Additionally,
272input characters are processed according to the
273.Fa c_iflag
274and
275.Fa c_lflag
276fields.
277Such processing can include echoing, which
278in general means transmitting input characters immediately back to the
279terminal when they are received from the terminal.
280This is useful for terminals that can operate in full-duplex mode.
281.Pp
282The manner in which data is provided to a process reading from a terminal
283device file is dependent on whether the terminal device file is in
284canonical or noncanonical mode.
285.Pp
286Another dependency is whether the
287.Dv O_NONBLOCK
288flag is set by
289.Xr open 2
290or
291.Xr fcntl 2 .
292If the
293.Dv O_NONBLOCK
294flag is clear, then the read request is
295blocked until data is available or a signal has been received.
296If the
297.Dv O_NONBLOCK
298flag is set, then the read request is completed, without
299blocking, in one of three ways:
300.Bl -enum -offset indent
301.It
302If there is enough data available to satisfy the entire request,
303and the read completes successfully the number of
304bytes read is returned.
305.It
306If there is not enough data available to satisfy the entire
307request, and the read completes successfully, having read as
308much data as possible, the number of bytes read is returned.
309.It
310If there is no data available, the read returns -1, with
311errno set to
312.Er EAGAIN .
313.El
314.Pp
315When data is available depends on whether the input processing mode is
316canonical or noncanonical.
317.Ss Canonical Mode Input Processing
318In canonical mode input processing, terminal input is processed in units
319of lines.
320A line is delimited by a newline
321.Ql \&\en
322character, an end-of-file
323.Pq Dv EOF
324character, or an end-of-line
325.Pq Dv EOL
326character.
327See the
328.Sx "Special Characters"
329section for
330more information on
331.Dv EOF
332and
333.Dv EOL .
334This means that a read request will
335not return until an entire line has been typed, or a signal has been
336received.
337Also, no matter how many bytes are requested in the read call,
338at most one line is returned.
339It is not, however, necessary to
340read a whole line at once; any number of bytes, even one, may be
341requested in a read without losing information.
342.Pp
343.Pf \&{ Dv MAX_CANON Ns \&}
344is a limit on the
345number of bytes in a line.
346The behavior of the system when this limit is
347exceeded is the same as when the input queue limit
348.Pf \&{ Dv MAX_INPUT Ns \&} ,
349is exceeded.
350.Pp
351Erase and kill processing occur when either of two special characters,
352the
353.Dv ERASE
354and
355.Dv KILL
356characters (see the
357.Sx "Special Characters"
358section), is received.
359This processing affects data in the input queue that has not yet been
360delimited by a newline
361.Dv NL ,
362.Dv EOF ,
363or
364.Dv EOL
365character.
366This un-delimited
367data makes up the current line.
368The
369.Dv ERASE
370character deletes the last
371character in the current line, if there is any.
372The
373.Dv KILL
374character
375deletes all data in the current line, if there is any.
376The
377.Dv ERASE
378and
379.Dv KILL
380characters have no effect if there is no data in the current line.
381The
382.Dv ERASE
383and
384.Dv KILL
385characters themselves are not placed in the input
386queue.
387.Ss Noncanonical Mode Input Processing
388In noncanonical mode input processing, input bytes are not assembled into
389lines, and erase and kill processing does not occur.
390The values of the
391.Dv VMIN
392and
393.Dv VTIME
394members of the
395.Fa c_cc
396array are used to determine how to
397process the bytes received.
398.Pp
399.Dv MIN
400represents the minimum number of bytes that should be received when
401the
402.Xr read 2
403function successfully returns.
404.Dv TIME
405is a timer of 0.1 second
406granularity that is used to time out bursty and short term data
407transmissions.
408If
409.Dv MIN
410is greater than
411.Dv \&{ Dv MAX_INPUT Ns \&} ,
412the response to the
413request is undefined.
414The four possible values for
415.Dv MIN
416and
417.Dv TIME
418and
419their interactions are described below.
420.Ss "Case A: MIN > 0, TIME > 0"
421In this case
422.Dv TIME
423serves as an inter-byte timer and is activated after
424the first byte is received.
425Since it is an inter-byte timer, it is reset
426after a byte is received.
427The interaction between
428.Dv MIN
429and
430.Dv TIME
431is as
432follows: as soon as one byte is received, the inter-byte timer is
433started.
434If
435.Dv MIN
436bytes are received before the inter-byte timer expires
437(remember that the timer is reset upon receipt of each byte), the read is
438satisfied.
439If the timer expires before
440.Dv MIN
441bytes are received, the
442characters received to that point are returned to the user.
443Note that if
444.Dv TIME
445expires at least one byte is returned because the timer would
446not have been enabled unless a byte was received.
447In this case
448.Pf \&( Dv MIN
449> 0,
450.Dv TIME
451> 0) the read blocks until the
452.Dv MIN
453and
454.Dv TIME
455mechanisms are
456activated by the receipt of the first byte, or a signal is received.
457If data is in the buffer at the time of the
458.Fn read ,
459the result is as
460if data had been received immediately after the
461.Fn read .
462.Ss "Case B: MIN > 0, TIME = 0"
463In this case, since the value of
464.Dv TIME
465is zero, the timer plays no role
466and only
467.Dv MIN
468is significant.
469A pending read is not satisfied until
470.Dv MIN
471bytes are received (i.e., the pending read blocks until
472.Dv MIN
473bytes
474are received), or a signal is received.
475A program that uses this case to read record-based terminal
476.Dv I/O
477may block indefinitely in the read
478operation.
479.Ss "Case C: MIN = 0, TIME > 0"
480In this case, since
481.Dv MIN
482= 0,
483.Dv TIME
484no longer represents an inter-byte
485timer.
486It now serves as a read timer that is activated as soon as the
487read function is processed.
488A read is satisfied as soon as a single
489byte is received or the read timer expires.
490Note that in this case if the timer expires, no bytes are returned.
491If the timer does not
492expire, the only way the read can be satisfied is if a byte is received.
493In this case the read will not block indefinitely waiting for a byte; if
494no byte is received within
495.Dv TIME Ns *0.1
496seconds after the read is initiated,
497the read returns a value of zero, having read no data.
498If data is
499in the buffer at the time of the read, the timer is started as if
500data had been received immediately after the read.
501.Ss Case D: MIN = 0, TIME = 0
502The minimum of either the number of bytes requested or the number of
503bytes currently available is returned without waiting for more
504bytes to be input.
505If no characters are available, read returns a
506value of zero, having read no data.
507.Ss Writing Data and Output Processing
508When a process writes one or more bytes to a terminal device file, they
509are processed according to the
510.Fa c_oflag
511field (see the
512.Sx "Output Modes"
513section).
514The
515implementation may provide a buffering mechanism; as such, when a call to
516.Fn write
517completes, all of the bytes written have been scheduled for
518transmission to the device, but the transmission will not necessarily
519have been completed.
520.\" See also .Sx "6.4.2" for the effects of
521.\" .Dv O_NONBLOCK
522.\" on write.
523.Ss Special Characters
524Certain characters have special functions on input or output or both.
525These functions are summarized as follows:
526.Bl -tag -width indent
527.It Dv INTR
528Special character on input and is recognized if the
529.Dv ISIG
530flag (see the
531.Sx "Local Modes"
532section) is enabled.
533Generates a
534.Dv SIGINT
535signal which is sent to all processes in the foreground
536process group for which the terminal is the controlling
537terminal.
538If
539.Dv ISIG
540is set, the
541.Dv INTR
542character is
543discarded when processed.
544.It Dv QUIT
545Special character on input and is recognized if the
546.Dv ISIG
547flag is enabled.
548Generates a
549.Dv SIGQUIT
550signal which is
551sent to all processes in the foreground process group
552for which the terminal is the controlling terminal.
553If
554.Dv ISIG
555is set, the
556.Dv QUIT
557character is discarded when
558processed.
559.It Dv ERASE
560Special character on input and is recognized if the
561.Dv ICANON
562flag is set.
563Erases the last character in the
564current line; see
565.Sx "Canonical Mode Input Processing" .
566It does not erase beyond
567the start of a line, as delimited by an
568.Dv NL ,
569.Dv EOF ,
570or
571.Dv EOL
572character.
573If
574.Dv ICANON
575is set, the
576.Dv ERASE
577character is
578discarded when processed.
579.It Dv KILL
580Special character on input and is recognized if the
581.Dv ICANON
582flag is set.
583Deletes the entire line, as
584delimited by a
585.Dv NL ,
586.Dv EOF ,
587or
588.Dv EOL
589character.
590If
591.Dv ICANON
592is set, the
593.Dv KILL
594character is discarded when processed.
595.It Dv EOF
596Special character on input and is recognized if the
597.Dv ICANON
598flag is set.
599When received, all the bytes
600waiting to be read are immediately passed to the
601process, without waiting for a newline, and the
602.Dv EOF
603is discarded.
604Thus, if there are no bytes waiting (that is, the
605.Dv EOF
606occurred at the beginning of a line), a byte
607count of zero is returned from the
608.Fn read ,
609representing an end-of-file indication.
610If
611.Dv ICANON
612is
613set, the
614.Dv EOF
615character is discarded when processed.
616.It Dv NL
617Special character on input and is recognized if the
618.Dv ICANON
619flag is set.
620It is the line delimiter
621.Ql \&\en .
622.It Dv EOL
623Special character on input and is recognized if the
624.Dv ICANON
625flag is set.
626Is an additional line delimiter, like
627.Dv NL .
628.It Dv SUSP
629If the
630.Dv ISIG
631flag is enabled, receipt of the
632.Dv SUSP
633character causes a
634.Dv SIGTSTP
635signal to be sent to all processes in the
636foreground process group for which the terminal is the
637controlling terminal, and the
638.Dv SUSP
639character is
640discarded when processed.
641.It Dv STOP
642Special character on both input and output and is
643recognized if the
644.Dv IXON
645(output control) or
646.Dv IXOFF
647(input
648control) flag is set.
649Can be used to temporarily suspend output.
650It is useful with fast terminals to
651prevent output from disappearing before it can be read.
652If
653.Dv IXON
654is set, the
655.Dv STOP
656character is discarded when
657processed.
658.It Dv START
659Special character on both input and output and is
660recognized if the
661.Dv IXON
662(output control) or
663.Dv IXOFF
664(input
665control) flag is set.
666Can be used to resume output that has been suspended by a
667.Dv STOP
668character.
669If
670.Dv IXON
671is set, the
672.Dv START
673character is discarded when processed.
674.It Dv CR
675Special character on input and is recognized if the
676.Dv ICANON
677flag is set; it is the
678.Ql \&\er ,
679as denoted in the
680.Tn \&C
681Standard {2}.
682When
683.Dv ICANON
684and
685.Dv ICRNL
686are set and
687.Dv IGNCR
688is not set, this character is translated into a
689.Dv NL ,
690and
691has the same effect as a
692.Dv NL
693character.
694.El
695.Pp
696The following special characters are extensions defined by this
697system and are not a part of
698.St -p1003.1
699termios.
700.Bl -tag -width indent
701.It Dv EOL2
702Secondary
703.Dv EOL
704character.
705Same function as
706.Dv EOL .
707.It Dv WERASE
708Special character on input and is recognized if the
709.Dv ICANON
710flag is set.
711Erases the last word in the current line according to one of two algorithms.
712If the
713.Dv ALTWERASE
714flag is not set, first any preceding whitespace is
715erased, and then the maximal sequence of non-whitespace
716characters.
717If
718.Dv ALTWERASE
719is set, first any preceding
720whitespace is erased, and then the maximal sequence
721of alphabetic/underscores or non alphabetic/underscores.
722As a special case in this second algorithm, the first previous
723non-whitespace character is skipped in determining
724whether the preceding word is a sequence of
725alphabetic/underscores.
726This sounds confusing but turns out to be quite practical.
727.It Dv REPRINT
728Special character on input and is recognized if the
729.Dv ICANON
730flag is set.
731Causes the current input edit line to be retyped.
732.It Dv DSUSP
733Has similar actions to the
734.Dv SUSP
735character, except that
736the
737.Dv SIGTSTP
738signal is delivered when one of the processes
739in the foreground process group issues a
740.Fn read
741to the
742controlling terminal.
743.It Dv LNEXT
744Special character on input and is recognized if the
745.Dv IEXTEN
746flag is set.
747Receipt of this character causes the next character to be taken literally.
748.It Dv DISCARD
749Special character on input and is recognized if the
750.Dv IEXTEN
751flag is set.
752Receipt of this character toggles the flushing of terminal output.
753.It Dv STATUS
754Special character on input and is recognized if the
755.Dv ICANON
756flag is set.
757Receipt of this character causes a
758.Dv SIGINFO
759signal to be sent to the foreground process group of the
760terminal.
761Also, if the
762.Dv NOKERNINFO
763flag is not set, it
764causes the kernel to write a status message to the terminal
765that displays the current load average, the name of the
766command in the foreground, its process ID, the symbolic
767wait channel, the number of user and system seconds used,
768the percentage of cpu the process is getting, and the resident
769set size of the process.
770.El
771.Pp
772The
773.Dv NL
774and
775.Dv CR
776characters cannot be changed.
777The values for all the remaining characters can be set and are
778described later in the document under
779Special Control Characters.
780.Pp
781Special
782character functions associated with changeable special control characters
783can be disabled individually by setting their value to
784.Dv {_POSIX_VDISABLE} ;
785see
786.Sx "Special Control Characters" .
787.Pp
788If two or more special characters have the same value, the function
789performed when that character is received is undefined.
790.Ss Modem Disconnect
791If a modem disconnect is detected by the terminal interface for a
792controlling terminal, and if
793.Dv CLOCAL
794is not set in the
795.Fa c_cflag
796field for
797the terminal, the
798.Dv SIGHUP
799signal is sent to the controlling
800process associated with the terminal.
801Unless other arrangements have
802been made, this causes the controlling process to terminate.
803Any subsequent call to the
804.Fn read
805function returns the value zero,
806indicating end of file.
807Thus, processes that read a terminal
808file and test for end-of-file can terminate appropriately after a
809disconnect.
810.\" If the
811.\" .Er EIO
812.\" condition specified in 6.1.1.4 that applies
813.\" when the implementation supports job control also exists, it is
814.\" unspecified whether the
815.\" .Dv EOF
816.\" condition or the
817.\" .Pf [ Dv EIO
818.\" ] is returned.
819Any
820subsequent
821.Fn write
822to the terminal device returns -1, with
823.Va errno
824set to
825.Er EIO ,
826until the device is closed.
827.Sh General Terminal Interface
828.Ss Closing a Terminal Device File
829The last process to close a terminal device file causes any output
830to be sent to the device and any input to be discarded.
831Then, if
832.Dv HUPCL
833is set in the control modes, and the communications port supports a
834disconnect function, the terminal device performs a disconnect.
835.Ss Parameters That Can Be Set
836Routines that need to control certain terminal
837.Tn I/O
838characteristics
839do so by using the termios structure as defined in the header
840.In termios.h .
841This structure contains minimally four scalar elements of bit flags
842and one array of special characters.
843The scalar flag elements are named:
844.Fa c_iflag ,
845.Fa c_oflag ,
846.Fa c_cflag ,
847and
848.Fa c_lflag .
849The character array is named
850.Fa c_cc ,
851and its maximum index is
852.Dv NCCS .
853.Ss Input Modes
854Values of the
855.Fa c_iflag
856field describe the basic
857terminal input control, and are composed of
858following masks:
859.Pp
860.Bl -tag -width IMAXBEL -offset indent -compact
861.It Dv IGNBRK
862/* ignore BREAK condition */
863.It Dv BRKINT
864/* map BREAK to SIGINTR */
865.It Dv IGNPAR
866/* ignore (discard) parity errors */
867.It Dv PARMRK
868/* mark parity and framing errors */
869.It Dv INPCK
870/* enable checking of parity errors */
871.It Dv ISTRIP
872/* strip 8th bit off chars */
873.It Dv INLCR
874/* map NL into CR */
875.It Dv IGNCR
876/* ignore CR */
877.It Dv ICRNL
878/* map CR to NL (ala CRMOD) */
879.It Dv IXON
880/* enable output flow control */
881.It Dv IXOFF
882/* enable input flow control */
883.It Dv IXANY
884/* any char will restart after stop */
885.It Dv IMAXBEL
886/* ring bell on input queue full */
887.El
888.Pp
889In the context of asynchronous serial data transmission, a break
890condition is defined as a sequence of zero-valued bits that continues for
891more than the time to send one byte.
892The entire sequence of zero-valued
893bits is interpreted as a single break condition, even if it continues for
894a time equivalent to more than one byte.
895In contexts other than
896asynchronous serial data transmission the definition of a break condition
897is implementation defined.
898.Pp
899If
900.Dv IGNBRK
901is set, a break condition detected on input is ignored, that
902is, not put on the input queue and therefore not read by any process.
903If
904.Dv IGNBRK
905is not set and
906.Dv BRKINT
907is set, the break condition flushes the
908input and output queues and if the terminal is the controlling terminal
909of a foreground process group, the break condition generates a
910single
911.Dv SIGINT
912signal to that foreground process group.
913If neither
914.Dv IGNBRK
915nor
916.Dv BRKINT
917is set, a break condition is read as a single
918.Ql \&\e0 ,
919or if
920.Dv PARMRK
921is set, as
922.Ql \&\e377 ,
923.Ql \&\e0 ,
924.Ql \&\e0 .
925.Pp
926If
927.Dv IGNPAR
928is set, a byte with a framing or parity error (other than
929break) is ignored.
930.Pp
931If
932.Dv PARMRK
933is set, and
934.Dv IGNPAR
935is not set, a byte with a framing or parity
936error (other than break) is given to the application as the
937three-character sequence
938.Ql \&\e377 ,
939.Ql \&\e0 ,
940X, where
941.Ql \&\e377 ,
942.Ql \&\e0
943is a two-character
944flag preceding each sequence and X is the data of the character received
945in error.
946To avoid ambiguity in this case, if
947.Dv ISTRIP
948is not set, a valid
949character of
950.Ql \&\e377
951is given to the application as
952.Ql \&\e377 ,
953.Ql \&\e377 .
954If
955neither
956.Dv PARMRK
957nor
958.Dv IGNPAR
959is set, a framing or parity error (other than
960break) is given to the application as a single character
961.Ql \&\e0 .
962.Pp
963If
964.Dv INPCK
965is set, input parity checking is enabled.
966If
967.Dv INPCK
968is not set,
969input parity checking is disabled, allowing output parity generation
970without input parity errors.
971Note that whether input parity checking is
972enabled or disabled is independent of whether parity detection is enabled
973or disabled (see
974.Sx "Control Modes" ) .
975If parity detection is enabled but input
976parity checking is disabled, the hardware to which the terminal is
977connected recognizes the parity bit, but the terminal special file
978does not check whether this bit is set correctly or not.
979.Pp
980If
981.Dv ISTRIP
982is set, valid input bytes are first stripped to seven bits,
983otherwise all eight bits are processed.
984.Pp
985If
986.Dv INLCR
987is set, a received
988.Dv NL
989character is translated into a
990.Dv CR
991character.
992If
993.Dv IGNCR
994is set, a received
995.Dv CR
996character is ignored (not
997read).
998If
999.Dv IGNCR
1000is not set and
1001.Dv ICRNL
1002is set, a received
1003.Dv CR
1004character is
1005translated into a
1006.Dv NL
1007character.
1008.Pp
1009If
1010.Dv IXON
1011is set, start/stop output control is enabled.
1012A received
1013.Dv STOP
1014character suspends output and a received
1015.Dv START
1016character
1017restarts output.
1018If
1019.Dv IXANY
1020is also set, then any character may
1021restart output.
1022When
1023.Dv IXON
1024is set,
1025.Dv START
1026and
1027.Dv STOP
1028characters are not
1029read, but merely perform flow control functions.
1030When
1031.Dv IXON
1032is not set,
1033the
1034.Dv START
1035and
1036.Dv STOP
1037characters are read.
1038.Pp
1039If
1040.Dv IXOFF
1041is set, start/stop input control is enabled.
1042The system shall transmit one or more
1043.Dv STOP
1044characters, which are intended to cause the
1045terminal device to stop transmitting data, as needed to prevent the input
1046queue from overflowing and causing the undefined behavior described in
1047.Sx "Input Processing and Reading Data" ,
1048and shall transmit one or more
1049.Dv START
1050characters, which are
1051intended to cause the terminal device to resume transmitting data, as
1052soon as the device can continue transmitting data without risk of
1053overflowing the input queue.
1054The precise conditions under which
1055.Dv STOP
1056and
1057.Dv START
1058characters are transmitted are implementation defined.
1059.Pp
1060If
1061.Dv IMAXBEL
1062is set and the input queue is full, subsequent input shall cause an
1063.Tn ASCII
1064.Dv BEL
1065character to be transmitted to
1066the output queue.
1067.Pp
1068The initial input control value after
1069.Fn open
1070is implementation defined.
1071.Ss Output Modes
1072Values of the
1073.Fa c_oflag
1074field describe the basic terminal output control,
1075and are composed of the following masks:
1076.Pp
1077.Bl -tag -width ONOEOT -offset indent -compact
1078.It Dv OPOST
1079/* enable following output processing */
1080.It Dv ONLCR
1081/* map NL to CR-NL (ala
1082.Dv CRMOD )
1083*/
1084.It Dv OCRNL
1085/* map CR to NL */
1086.It Dv TABDLY
1087/* tab delay mask */
1088.It Dv TAB0
1089/* no tab delay and expansion */
1090.It Dv TAB3
1091/* expand tabs to spaces */
1092.It Dv ONOEOT
1093/* discard
1094.Dv EOT Ns 's
1095.Ql \&^D
1096on output) */
1097.It Dv ONOCR
1098/* do not transmit CRs on column 0 */
1099.It Dv ONLRET
1100/* on the terminal NL performs the CR function */
1101.El
1102.Pp
1103If
1104.Dv OPOST
1105is set, the remaining flag masks are interpreted as follows;
1106otherwise characters are transmitted without change.
1107.Pp
1108If
1109.Dv ONLCR
1110is set, newlines are translated to carriage return, linefeeds.
1111.Pp
1112If
1113.Dv OCRNL
1114is set, carriage returns are translated to newlines.
1115.Pp
1116The
1117.Dv TABDLY
1118bits specify the tab delay.
1119The
1120.Fa c_oflag
1121is masked with
1122.Dv TABDLY
1123and compared with the
1124values
1125.Dv TAB0
1126or
1127.Dv TAB3 .
1128If
1129.Dv TAB3
1130is set, tabs are expanded to the appropriate number of
1131spaces (assuming 8 column tab stops).
1132.Pp
1133If
1134.Dv ONOEOT
1135is set,
1136.Tn ASCII
1137.Dv EOT Ns 's
1138are discarded on output.
1139.Pp
1140If
1141.Dv ONOCR
1142is set, no CR character is transmitted when at column 0 (first position).
1143.Pp
1144If
1145.Dv ONLRET
1146is set, the NL character is assumed to do the carriage-return function;
1147the column pointer will be set to 0.
1148.Ss Control Modes
1149Values of the
1150.Fa c_cflag
1151field describe the basic
1152terminal hardware control, and are composed of the
1153following masks.
1154Not all values
1155specified are supported by all hardware.
1156.Pp
1157.Bl -tag -width CRTSXIFLOW -offset indent -compact
1158.It Dv CSIZE
1159/* character size mask */
1160.It Dv CS5
1161/* 5 bits (pseudo) */
1162.It Dv CS6
1163/* 6 bits */
1164.It Dv CS7
1165/* 7 bits */
1166.It Dv CS8
1167/* 8 bits */
1168.It Dv CSTOPB
1169/* send 2 stop bits */
1170.It Dv CREAD
1171/* enable receiver */
1172.It Dv PARENB
1173/* parity enable */
1174.It Dv PARODD
1175/* odd parity, else even */
1176.It Dv HUPCL
1177/* hang up on last close */
1178.It Dv CLOCAL
1179/* ignore modem status lines */
1180.It Dv CCTS_OFLOW
1181/*
1182.Dv CTS
1183flow control of output */
1184.It Dv CRTSCTS
1185/* same as
1186.Dv CCTS_OFLOW
1187*/
1188.It Dv CRTS_IFLOW
1189/* RTS flow control of input */
1190.It Dv MDMBUF
1191/* flow control output via Carrier */
1192.El
1193.Pp
1194The
1195.Dv CSIZE
1196bits specify the byte size in bits for both transmission and
1197reception.
1198The
1199.Fa c_cflag
1200is masked with
1201.Dv CSIZE
1202and compared with the
1203values
1204.Dv CS5 ,
1205.Dv CS6 ,
1206.Dv CS7 ,
1207or
1208.Dv CS8 .
1209This size does not include the parity bit, if any.
1210If
1211.Dv CSTOPB
1212is set, two stop bits are used, otherwise one stop bit.
1213For example, at 110 baud, two stop bits are normally used.
1214.Pp
1215If
1216.Dv CREAD
1217is set, the receiver is enabled.
1218Otherwise, no character is received.
1219Not all hardware supports this bit.
1220In fact, this flag is pretty silly and if it were not part of the
1221.Nm
1222specification
1223it would be omitted.
1224.Pp
1225If
1226.Dv PARENB
1227is set, parity generation and detection are enabled and a parity
1228bit is added to each character.
1229If parity is enabled,
1230.Dv PARODD
1231specifies
1232odd parity if set, otherwise even parity is used.
1233.Pp
1234If
1235.Dv HUPCL
1236is set, the modem control lines for the port are lowered
1237when the last process with the port open closes the port or the process
1238terminates.
1239The modem connection is broken.
1240.Pp
1241If
1242.Dv CLOCAL
1243is set, a connection does not depend on the state of the modem
1244status lines.
1245If
1246.Dv CLOCAL
1247is clear, the modem status lines are
1248monitored.
1249.Pp
1250Under normal circumstances, a call to the
1251.Fn open
1252function waits for
1253the modem connection to complete.
1254However, if the
1255.Dv O_NONBLOCK
1256flag is set
1257or if
1258.Dv CLOCAL
1259has been set, the
1260.Fn open
1261function returns
1262immediately without waiting for the connection.
1263.Pp
1264The
1265.Dv CCTS_OFLOW
1266.Pf ( Dv CRTSCTS )
1267flag is currently unused.
1268.Pp
1269If
1270.Dv MDMBUF
1271is set then output flow control is controlled by the state
1272of Carrier Detect.
1273.Pp
1274If the object for which the control modes are set is not an asynchronous
1275serial connection, some of the modes may be ignored; for example, if an
1276attempt is made to set the baud rate on a network connection to a
1277terminal on another host, the baud rate may or may not be set on the
1278connection between that terminal and the machine it is directly connected
1279to.
1280.Ss Local Modes
1281Values of the
1282.Fa c_lflag
1283field describe the control of
1284various functions, and are composed of the following
1285masks.
1286.Pp
1287.Bl -tag -width NOKERNINFO -offset indent -compact
1288.It Dv ECHOKE
1289/* visual erase for line kill */
1290.It Dv ECHOE
1291/* visually erase chars */
1292.It Dv ECHO
1293/* enable echoing */
1294.It Dv ECHONL
1295/* echo
1296.Dv NL
1297even if
1298.Dv ECHO
1299is off */
1300.It Dv ECHOPRT
1301/* visual erase mode for hardcopy */
1302.It Dv ECHOCTL
1303/* echo control chars as ^(Char) */
1304.It Dv ISIG
1305/* enable signals
1306.Dv INTR ,
1307.Dv QUIT ,
1308.Dv [D]SUSP
1309*/
1310.It Dv ICANON
1311/* canonicalize input lines */
1312.It Dv ALTWERASE
1313/* use alternate
1314.Dv WERASE
1315algorithm */
1316.It Dv IEXTEN
1317/* enable
1318.Dv DISCARD
1319and
1320.Dv LNEXT
1321*/
1322.It Dv EXTPROC
1323/* external processing */
1324.It Dv TOSTOP
1325/* stop background jobs from output */
1326.It Dv FLUSHO
1327/* output being flushed (state) */
1328.It Dv NOKERNINFO
1329/* no kernel output from
1330.Dv VSTATUS
1331*/
1332.It Dv PENDIN
1333/* XXX retype pending input (state) */
1334.It Dv NOFLSH
1335/* don't flush after interrupt */
1336.El
1337.Pp
1338If
1339.Dv ECHO
1340is set, input characters are echoed back to the terminal.
1341If
1342.Dv ECHO
1343is not set, input characters are not echoed.
1344.Pp
1345If
1346.Dv ECHOE
1347and
1348.Dv ICANON
1349are set, the
1350.Dv ERASE
1351character causes the terminal
1352to erase the last character in the current line from the display, if
1353possible.
1354If there is no character to erase, an implementation may echo
1355an indication that this was the case or do nothing.
1356.Pp
1357If
1358.Dv ECHOK
1359and
1360.Dv ICANON
1361are set, the
1362.Dv KILL
1363character causes
1364the current line to be discarded and the system echoes the
1365.Ql \&\en
1366character after the
1367.Dv KILL
1368character.
1369.Pp
1370If
1371.Dv ECHOKE
1372and
1373.Dv ICANON
1374are set, the
1375.Dv KILL
1376character causes
1377the current line to be discarded and the system causes
1378the terminal
1379to erase the line from the display.
1380.Pp
1381If
1382.Dv ECHOPRT
1383and
1384.Dv ICANON
1385are set, the system assumes
1386that the display is a printing device and prints a
1387backslash and the erased characters when processing
1388.Dv ERASE
1389characters, followed by a forward slash.
1390.Pp
1391If
1392.Dv ECHOCTL
1393is set, the system echoes control characters
1394in a visible fashion using a caret followed by the control character.
1395.Pp
1396If
1397.Dv ALTWERASE
1398is set, the system uses an alternative algorithm
1399for determining what constitutes a word when processing
1400.Dv WERASE
1401characters (see
1402.Dv WERASE ) .
1403.Pp
1404If
1405.Dv ECHONL
1406and
1407.Dv ICANON
1408are set, the
1409.Ql \&\en
1410character echoes even if
1411.Dv ECHO
1412is not set.
1413.Pp
1414If
1415.Dv ICANON
1416is set, canonical processing is enabled.
1417This enables the
1418erase and kill edit functions, and the assembly of input characters into
1419lines delimited by
1420.Dv NL ,
1421.Dv EOF ,
1422and
1423.Dv EOL ,
1424as described in
1425.Sx "Canonical Mode Input Processing" .
1426.Pp
1427If
1428.Dv ICANON
1429is not set, read requests are satisfied directly from the input
1430queue.
1431A read is not satisfied until at least
1432.Dv MIN
1433bytes have been
1434received or the timeout value
1435.Dv TIME
1436expired between bytes.
1437The time value
1438represents tenths of seconds.
1439See
1440.Sx "Noncanonical Mode Input Processing"
1441for more details.
1442.Pp
1443If
1444.Dv ISIG
1445is set, each input character is checked against the special
1446control characters
1447.Dv INTR ,
1448.Dv QUIT ,
1449and
1450.Dv SUSP
1451(job control only).
1452If an input
1453character matches one of these control characters, the function
1454associated with that character is performed.
1455If
1456.Dv ISIG
1457is not set, no
1458checking is done.
1459Thus these special input functions are possible only
1460if
1461.Dv ISIG
1462is set.
1463.Pp
1464If
1465.Dv IEXTEN
1466is set, implementation-defined functions are recognized
1467from the input data.
1468How
1469.Dv IEXTEN
1470being set
1471interacts with
1472.Dv ICANON ,
1473.Dv ISIG ,
1474.Dv IXON ,
1475or
1476.Dv IXOFF
1477is implementation defined.
1478If
1479.Dv IEXTEN
1480is not set, then
1481implementation-defined functions are not recognized, and the
1482corresponding input characters are not processed as described for
1483.Dv ICANON ,
1484.Dv ISIG ,
1485.Dv IXON ,
1486and
1487.Dv IXOFF .
1488.Pp
1489If
1490.Dv NOFLSH
1491is set, the normal flush of the input and output queues
1492associated with the
1493.Dv INTR ,
1494.Dv QUIT ,
1495and
1496.Dv SUSP
1497characters
1498are not be done.
1499.Pp
1500If
1501.Dv TOSTOP
1502is set, the signal
1503.Dv SIGTTOU
1504is sent to the process group of a process that tries to write to
1505its controlling terminal if it is not in the foreground process group for
1506that terminal.
1507This signal, by default, stops the members of the process group.
1508Otherwise, the output generated by that process is output to the
1509current output stream.
1510Processes that are blocking or ignoring
1511.Dv SIGTTOU
1512signals are excepted and allowed to produce output and the
1513.Dv SIGTTOU
1514signal
1515is not sent.
1516.Pp
1517If
1518.Dv NOKERNINFO
1519is set, the kernel does not produce a status message
1520when processing
1521.Dv STATUS
1522characters (see
1523.Dv STATUS ) .
1524.Ss Special Control Characters
1525The special control characters values are defined by the array
1526.Fa c_cc .
1527This table lists the array index, the corresponding special character,
1528and the system default value.
1529For an accurate list of
1530the system defaults, consult the header file
1531.In sys/ttydefaults.h .
1532.Pp
1533.Bl -column "Index Name" "Special Character" -offset indent -compact
1534.It Em "Index Name	Special Character	Default Value"
1535.It Dv VEOF Ta EOF Ta \&^D
1536.It Dv VEOL Ta EOL Ta _POSIX_VDISABLE
1537.It Dv VEOL2 Ta EOL2 Ta _POSIX_VDISABLE
1538.It Dv VERASE Ta ERASE Ta \&^? Ql \&\e177
1539.It Dv VWERASE Ta WERASE Ta \&^W
1540.It Dv VKILL Ta KILL Ta \&^U
1541.It Dv VREPRINT Ta REPRINT Ta \&^R
1542.It Dv VINTR Ta INTR Ta \&^C
1543.It Dv VQUIT Ta QUIT Ta \&^\e\e Ql \&\e34
1544.It Dv VSUSP Ta SUSP Ta \&^Z
1545.It Dv VDSUSP Ta DSUSP Ta \&^Y
1546.It Dv VSTART Ta START Ta \&^Q
1547.It Dv VSTOP Ta STOP Ta \&^S
1548.It Dv VLNEXT Ta LNEXT Ta \&^V
1549.It Dv VDISCARD Ta DISCARD Ta \&^O
1550.It Dv VMIN Ta --- Ta \&1
1551.It Dv VTIME Ta --- Ta \&0
1552.It Dv VSTATUS Ta STATUS Ta \&^T
1553.El
1554.Pp
1555If the
1556value of one of the changeable special control characters (see
1557.Sx "Special Characters" )
1558is
1559.Dv {_POSIX_VDISABLE} ,
1560that function is disabled; that is, no input
1561data is recognized as the disabled special character.
1562If
1563.Dv ICANON
1564is
1565not set, the value of
1566.Dv {_POSIX_VDISABLE}
1567has no special meaning for the
1568.Dv VMIN
1569and
1570.Dv VTIME
1571entries of the
1572.Fa c_cc
1573array.
1574.Pp
1575The initial values of the flags and control characters
1576after
1577.Fn open
1578is set according to
1579the values in the header
1580.In sys/ttydefaults.h .
1581.Sh SEE ALSO
1582.Xr stty 1 ,
1583.Xr tcgetsid 3 ,
1584.Xr tcsendbreak 3 ,
1585.Xr tcsetattr 3 ,
1586.Xr tcsetsid 3 ,
1587.Xr tty 4
1588