termios.h 文件

用途

定义 termios 文件的结构,该文件提供了用于实现 POSIX 兼容性的终端接口。

描述

/usr/include/termios.h 文件包含适用于终端文件的子例程所使用的信息。 为了与 POSIX 标准兼容,需要此文件中的定义,值和结构。 termios.h 文件还支持 ioctl 调制解调器控制操作

一般终端接口信息包含在 termio.h 文件中。 termio.h 文件中的 termio 结构定义基本输入,输出,控制和行规程方式。 如果将调用程序标识为需要 POSIX 兼容性,那么将实现 termios.h 文件中的 termios 结构和其他 POSIX 控制包信息。 窗口和终端大小操作使用 winsize 结构,此结构在 ioctl.h 文件中定义。 termios.h 文件中的 termios 结构包含以下字段:

  • c_iflag
  • c_oflag
  • c_cflag
  • c_lflag
  • c_cc

termios.h 文件还 定义值 用于 特切塔特尔 子例程的以下参数:

  • OptionalActions
  • QueueSelector
  • 操作

termios.h 文件还支持 ioctl 调制解调器控制操作

字段描述
 
c_iflag
描述基本终端输入控件。 初始输入/控制值为所有位清除。 可能的输入方式为:
IGNBRK
忽略中断条件。 在异步串行数据传输的上下文中, 中断条件 定义为零值位的序列,该序列将持续超过发送一个字节所需的时间。 零值位的整个序列被解释为单个中断条件,即使它持续了相当于一个字节以上的时间量。 如果设置了 IGNBRK 标志,那么将忽略在输入上检测到的中断条件,这意味着它不会放在输入队列上,因此不会被任何进程读取。
BRKINT
中断条件下的信号中断。 如果未设置 IGNBRK 标志,并且设置了 BRKINT 标志,那么中断条件会清空输入和输出队列。 如果该终端是前台进程组的控制终端,那么中断条件将向该前台进程组生成 SIGINT 信号。 如果既未设置 IGNBRK ,也未设置 BRKINT 标志,那么会将中断条件读取为单个 \0 ,或者如果将 PARMRK 标志设置为 \377 , \0 和 \0。
IGNPAR
忽略带有奇偶错误的字符。 如果设置了此标志,那么将忽略具有帧或奇偶错误 (而不是中断) 的字节。
PARMRK
标记奇偶错误。 如果设置了 PARMRK 标志,并且未设置 IGNPAR 标志,那么会将带有帧或奇偶错误 (除中断之外) 的字节作为三个字符的序列 \377 , \0 X提供给应用程序,其中 \377 , \0 是每个序列前面的两个字符的标志, X 是接收到的错误字符的数据。 为了避免在此情况下出现岐义,如果未设置 ISTRIP 标志,那么会将有效字符 \377 作为 \377 和 \377 提供给应用程序。 如果既未设置 IGNPAR 也未设置 PARMRK 标志,那么会将框架划分或奇偶性校验错误 (除中断之外) 作为单个字符 \0 提供给应用程序。
INPCK
启用输入奇偶性校验检查。 如果设置了此标志,那么将启用输入奇偶性校验检查。 如果未设置,那么将禁用输入奇偶性校验检查。 这允许在没有输入奇偶性校验错误的情况下生成输出奇偶性校验。
ISTRIP
除去字符。 如果设置了此标志,那么首先将有效输入字符除去为 7 位。 否则,将处理所有 8 位。
INLCR
在输入时,将换行符 (NL) 映射到回车符 (CR)。 如果设置了此标志,那么接收到的 NL 字符将转换为 CR 字符。
IGNCR
忽略 CR 字符。 如果设置了此标志,那么将忽略且不读取接收到的 CR 字符。
ICRNL
将 CR 字符映射到输入上的 NL 字符。 如果设置了 ICRNL 标志,但未设置 IGNCR 标志,那么会将接收到的 CR 字符转换为 NL 字符。
IUCLC
在输入时将大写映射到小写。 如果设置了此标志,那么会将接收到的大写,字母字符转换为相应的小写字符。
IXON
启用启动和停止输出控制。 如果设置了此标志,那么接收到的 STOP 字符将暂挂输出,接收到的 START 字符将重新启动输出。 如果设置了 IXON 标志,那么不会读取 START 和 STOP 字符,而仅执行流量控制功能。 如果未设置 IXON 标志,那么会读取 START 和 STOP 字符。
IXANY
启用任何字符以重新启动输出。 如果设置了此标志,那么任何输入字符都将重新启动已暂挂的输出。
IXOFF
启用启动/停止输入控制。 如果设置了此标志,那么系统将在输入队列几乎已满时发送 STOP 字符,并在读取足够的输入时发送 START 字符,使该队列几乎再次为空。
IMAXBEL
如果输入流溢出,那么将回传 ASCII BEL 字符。 未存储进一步的输入,但输入流中已存在的输入不会丢失。 如果未设置此标志,那么不会回传 BEL 字符; 如果输入流溢出,那么将废弃输入队列中的输入。 此函数还要求设置 IEXTEN 位。
c_oflag
指定系统处理输出的方式。 初始输出控制值为 "所有位都清除"。 可能的输出方式为:
OPOST
流程后输出。 如果设置了此标志,那么将按剩余标志指示的方式对输出字符进行后处理。 否则,将在不更改的情况下传输字符。
OLUC
在输出中将小写映射到大写。 如果设置了此标志,那么将以相应的大写字符形式传输小写字母字符。 此标志通常与 IUCLC 输入方式配合使用。
ONLCR
在输出时将 NL 映射到 CR-NL。 如果设置了此标志,那么 NL 字符将作为 CR-NL 字符对进行传输。
OCRNL
在输出时将 CR 映射到 NL。 如果设置了此标志,那么 CR 字符将作为 NL 字符进行传输。
ONOCR
指示第 0 列没有 CR 输出。 如果设置了此标志,那么在第 0 列 (第一个位置) 时不会发送 CR 字符。
ONLRET
NL 执行 CR 功能。 如果设置了此标志,那么会假定 NL 字符执行回车符功能。 将列指针设置为 0 ,并使用为回车符指定的延迟。 如果既未设置 ONLCROCRNLONOCR,也未设置 ONLRET 标志,那么将假定 NL 字符仅执行换行功能。 列指针将保持不变。 如果实际传输 CR 字符,那么列指针将设置为 0。

延迟位指定当将某些字符发送到终端时,传输停止的时间长度以允许机械或其他移动。 实际的延迟取决于线路速度和系统负载。

OFILL
使用填充字符进行延迟。 如果设置了此标志,那么将发送填充字符以进行延迟而不是定时延迟。 这对于只需要最小延迟的高波特率终端很有用。
奥夫德尔
如果设置了此标志,那么填充字符为 DEL。 如果未设置此标志,那么填充字符为 NULL。
NLDLY
选择新行的字符延迟。 这是在与 NL0 和 NL1: 进行比较之前要使用的掩码
NL0
指定无延迟。
NL1
指定大约 0.10 秒的延迟。 如果设置了 ONLRET 标志,那么将使用回车延迟而不是换行符延迟。 如果设置了 OFILL 标志,那么将传输两个填充字符。
CRDLY
选择回车延迟数。 这是在与 CR0, CR1, CR2和 CR3: 进行比较之前要使用的掩码
CR0
指定无延迟。
CR1
指定延迟从属于当前列位置。 如果设置了 OFILL 标志,那么此延迟将传输两个填充字符。
CR2
指定大约 0.10 秒的延迟。 如果设置了 OFILL 标志,那么此延迟将传输四个填充字符。
CR3
指定大约 0.15 秒的延迟。
表 DLY
选择水平选项卡延迟。 这是在与 TAB0, TAB1, TAB2和 TAB3进行比较之前要使用的掩码。 如果设置了 OFILL 标志,那么这些延迟中的任何延迟 ( TAB3除外) 都将传输两个填充字符。
TAB0
指定无延迟。
TAB1
指定延迟从属于当前列位置。 如果设置了 OFILL 标志,那么将传输两个填充字符。
TAB2
指定大约 0.10 秒的延迟。
TAB3
指定要将选项卡展开为空格。
BSDLY
选择退格延迟。 这是在与 BS0 和 BS1: 进行比较之前要使用的掩码
BS0
指定无延迟。
BS1
指定大约 0.05 秒的延迟。 如果设置了 OFILL 标志,那么此延迟将传输一个填充字符。
VTDLY
选择垂直选项卡延迟。 这是在与 VT0 和 VT1: 进行比较之前要使用的掩码
VT0
指定无延迟。
VT1
指定大约 2 秒的延迟。
FDLY
选择换页延迟数。 这是在与 FF0 和 FF1: 进行比较之前要使用的掩码
FF0
指定无延迟。
FF1
指定大约 2 秒的延迟。
c_cflag
描述了终端的硬件控制。 除基本控制方式外,此字段还使用以下控制字符:
CBAUD
指定波特率。 这些位指定了连接的波特率。 对于任何特定硬件,将忽略不可能的速度更改。
B50
50 波特
B75
75 波德
B110
110 波特
B134
134.5 波特。
B150
150 波特
B200
200 波特
B300
300 波特
B600
600 波特
B1200
1200 波特
B1800
1800 波特
B2400
2400 波特。
B4800
4800 波特
B9600
9600 波特
B19200
19200 波德
B38400
38400 波特
扩展
外部 A
扩展
外部 B。
CSIZE
指定字符大小。 这些位指定发送和接收操作的字符大小 (以位为单位)。 字符大小不包括奇偶性校验位 (如果使用了奇偶性校验位):
CS5
5 5 位
CS6
6 位
CS7
7 位
CS8
8 8 位。
CSTOPB
指定停止位的数目。 如果设置了此标志,那么发送 2 个停止位; 否则,仅发送 1 个停止位。
CREAD
启用接收方。 如果设置了此标志,那么将启用接收方。 否则,不会接收到字符。
PARENB
启用奇偶性校验。 如果设置了此标志,那么将启用奇偶性校验生成和检测,并向每个字符添加奇偶性校验位。
PARODD
指定奇校验。 如果启用了奇偶性校验,那么 PARODD 标志指定奇数奇偶性校验 (如果已设置)。 如果启用了奇偶性校验并且未设置 PARODD 标志,那么甚至会使用奇偶性校验。
HUPCL
在上次关闭时挂断。 如果设置了此标志,那么当最后一个进程关闭线路或进程终止时 (当 "数据终端就绪" 信号断开时) ,该线路将断开连接。
本地
指定本地行。 如果设置了此标志,那么假定该线路具有本地直接连接,并且没有调制解调器控制。 如果未设置,将采用调制解调器控制 (拨号)。
CIBAUD
指定输入波特率 (如果与输出率不同)。
PAREXT
指定标记和空间奇偶性校验的扩展奇偶性校验。
c_lflag
控制各种终端功能。 打开后的初始值是 "所有位都清除"。 除了基本方式之外,此字段还使用下列掩码名称符号:
ISIG
启用信号。 如果设置了此标志,那么将针对 INTR , QUIT , SUSP 和 DSUSP 特殊控制字符检查每个输入字符。 如果输入字符与其中一个控制字符匹配,那么将执行与该字符关联的功能。 如果未设置 ISIG 标志,那么将不执行检查。
ICANON
启用规范输入。 如果设置了此标志,那么它将开启规范处理,这将启用擦除和终止编辑功能,并将输入字符组合成由 NL , EOF 和 EOL 字符分隔的行。 如果未设置 ICANON 标志,那么将直接从输入队列中满足读请求。 在此情况下,在满足下列其中一个条件之后,才会满足读请求:
  • 接收到由 最小 指定的最小字符数。
  • 自接收到最后一个字符以来, 时间 指定的超时值已到期。 这允许读取输入的脉冲串,同时仍然允许单字符输入。

最小时间 值分别存储在 EOF 字符和 EOL 字符的位置中。 最小时间 的字符值将转换为它们的 ascii 等价值以获取数字值。 时间值表示十分之几秒。

XCASE
启用规范的大写和小写表示。 如果此标志与 ICANON 标志一起设置,那么在输入时将接受大写字母 (或通过 IUCLC 输入方式转换为小写的大写字母) ,方法是在其前面加上 \ (反斜杠) 字符。 然后,还会在输出前面添加反斜杠字符。 在此方式下,输出将生成并输入接受以下转义序列:
对于
使用
` (坟墓)
\ `
|
\ !
~
\ ^
{
\ (
}
\ )
\
\ \

例如, A 是输入为\a, \n 作为\\n,并且 \n 为\\\n.

NOFLSH
禁用队列清空。 如果设置了此标志,那么不会执行与 INTR , QUIT 和 SUSP 字符关联的输入和输出队列的正常清空操作。
FLUSHO
对输出进行清仓。 当通过输入 FLUSH 字符来设置此位时,写入终端的数据将被废弃。 终端可以通过清除此位来取消输入 FLUSH 字符的效果。
彭丁
重新打印暂挂输入。 如果设置了此标志,那么在下一次读操作变为暂挂或下一次输入到达时,将重新输入从原始方式切换到规范方式后暂挂的任何输入。 PENDIN 标志是内部状态的位。
IEXTEN
支持从输入数据中识别扩展 (由实施定义) 函数。 如果未设置此标志,那么将无法识别实现定义的函数,并且将按照 ICANONISIGIXONIXOFF 标志的描述来处理相应的输入字符。 要识别以下特殊控制字符,需要设置 IEXTEN 标志:
  • VEOL2
  • VDSUSP
  • VREPRINT
  • VDISCRD
  • VWERSE
  • VLNEXT

与以下位相关联的函数还需要设置 IEXTEN 标志:

  • IMAXBEL
  • ECHOKE
  • ECHOPRT
  • ECHOCTL
停止
当后台进程组中的进程尝试写入它的控制终端时,发送 SIGTTOU 信号。 SIGTTOU 信号将停止该进程组的成员。
ECHO
启用回传。 如果设置了此标志,那么将在接收到字符时回传这些字符。

在设置 ICANON 时,还可以使用以下回传函数:

ECHOE
将擦除字符回传为 Backspace-Space-Backspace。 如果同时设置了 欧共体人道处ECHOE 标志,并且未设置 ECHOPRT 标志,那么 ERASE 和 WERASE 字符将作为一个或多个 ASCII Backspace-Space-Backspace 序列回传,这将清除屏幕中的最后一个字符。
ECHOPRT
如果同时设置了 欧共体人道处ECHOPRT 标志,那么序列中的第一个 ERASE 和 WERASE 字符将回传为 \ (反斜杠) ,后跟要擦除的字符。 后续 ERASE 和 WERASE 字符以相反的顺序回传要擦除的字符。 下一个非擦除字符会导致在回显非擦除字符之前输入/(斜杠)。 此函数还要求设置 IEXTEN 位。
ECHOKE
退格-空间-行终止时退格整行。 如果设置了此标志,那么将通过从屏幕擦除整行 (使用 ECHOEECHOPRT 标志选择的机制) 来回传终止字符。 该功能还需要设置 IEXTEN 标志。
ECHOK
在杀死后回显 NL 字符。 如果设置了 ECHOK 标志,但未设置 ECHOKE 标志,那么在接收到终止字符后,将回传 NL 字符。 这强调删除了该行。
ECHONL
回送 NL 字符。 如果设置了 ECHONL 标志,那么即使未设置 欧共体人道处 标志,也将回传 NL 字符。 对于设置为 "本地回传" (也称为 "半双工") 的终端而言,这很有用。
ECHOCTL
将控制字符 (代码在 0 到 37 个八进制之间) 回传为 ^X,其中 X 是将 100 个八进制添加到控制字符的代码中生成的字符。 (例如,具有八进制代码 1 的字符被回传为^A)。 ASCII DEL 字符 (代码 177 八进制) 被回传为^?. ASCII TAB , NL 和 START 字符不会被回传。 除非已转义 (前面加上反斜杠) ,否则不会回传 EOF 字符。 因此,因为 EOT 是默认的 EOF 字符,所以会阻止响应 EOT 的终端挂断。 该功能还需要设置 IEXTEN 标志。
c_cc
指定用于定义特殊控制字符的数组。 每个函数的相对位置和初始值如下所示:
VINTR
对 INTR 特殊字符 (Ctrl-c) 建立索引,如果设置了 ISIG 标志,那么将在输入时识别该特殊字符。 INTR 字符生成 SIGINT 信号,该信号被发送到前台进程组中的所有进程,该终端是该前台进程组的控制终端。 如果设置了 ISIG 标志,那么在处理时将废弃 INTR 字符。
VQUIT
对 QUIT 特殊字符 (Ctrl-\) 建立索引,如果设置了 ISIG 标志,那么将在输入时识别该字符。 QUIT 字符生成 SIGQUIT 信号,该信号将发送到前台进程组中以终端为控制终端的所有进程,并将 核心 图像文件写入到当前工作目录中。 如果设置了 ISIG 标志,那么在处理时将废弃 QUIT 字符。
维 ERASE
对 ERASE 特殊字符 (Backspace) 建立索引,如果设置了 ICANON 标志,那么将在输入时识别该字符。 ERASE 字符不会擦除超出由 NL , EOL , EOF 或 EOL2 字符定界的行的开头部分。 如果设置了 ICANON 标志,那么处理时将废弃 ERASE 字符。
VKILL
对 KILL 特殊字符 (Ctrl-u) 建立索引,如果设置了 ICANON 标志,那么将在输入时识别该字符。 KILL 字符将删除整行 (由 NL , EOL , EOF 或 EOL2 字符定界)。 如果设置了 ICANON 标志,那么处理时将废弃 KILL 字符。
VEOF
对 EOF 特殊字符 (Ctrl-d) 建立索引,如果设置了 ICANON 标志,那么将在输入时识别该特殊字符。 当接收到 EOF 时,所有等待读取的字符将立即传递到进程中,而不等待新行,并且将废弃 EOF。 如果在一行的开头接收到 EOF (没有正在等待的字符) ,那么将从读取返回零的字符计数,表示文件结束。 如果设置了 ICANON 标志,那么在处理时将废弃 EOF 字符。
VEOL
对 EOL 特殊字符 (Ctrl-@ 或 ASCII NULL) 建立索引,如果设置了 ICANON 标志,那么将在输入时识别该字符。 EOL 是额外的行定界符 (例如 NL) ,通常不使用。
VEOL2
对 EOL2 特殊字符 (Ctrl-@ 或 ASCII NULL) 建立索引,如果设置了 ICANONIEXTEN 标志,那么将在输入时识别该字符。 EOL2 是额外的行定界符 (例如 NL) ,通常不使用。
VSTART
对 START 特殊字符 (Ctrl-q) 建立索引,如果设置了 IXON 标志,那么会在输入时识别该字符; 如果设置了 IXOFF 标志,那么会在输出时生成该字符。 可以使用 START 字符来恢复已由 STOP 字符暂挂的输出。 如果设置了 IXON 标志,那么处理时将废弃 START 字符。 当输出未暂挂时,将忽略且不读取 START 字符。 VSTRTVSTART的别名。
VSTOP
对 STOP 特殊字符 (Ctrl-s) 建立索引,如果设置了 IXON 标志,那么会在输入时识别此特殊字符; 如果设置了 IXOFF 标志,那么会在输出时生成此特殊字符。 STOP 字符可以与终端一起使用,以防止输出消失,然后才能读取。 如果设置了 IXON 标志,那么在处理时将废弃 STOP 字符。 当输出暂挂时,将忽略 STOP 字符而不读取。
VSUSP
对 SUSP 特殊字符 (Ctrl-z) 建立索引,如果设置了 ISIG 标志,那么将在输入时识别此特殊字符。 SUSP 字符生成一个 SIGTSTP 信号,该信号被发送到前台进程组中的所有进程,该终端是该前台进程组的控制终端。 如果设置了 ISIG 标志,那么在处理时将废弃 SUSP 字符。
VDSUSP
对 DSUSP 特殊字符 (Ctrl-y) 建立索引,如果设置了 ISIGIEXTEN 标志,那么会在输入时识别该字符。 DSUSP 字符会像 SUSP 字符一样生成 SIGTSTP 信号,但当前台进程组中的进程尝试读取 DSUSP 字符时,而不是在输入 DSUSP 时,会发送该信号。 如果设置了 ISIGIEXTEN 标志,那么在处理时将废弃 DSUSP 字符。
VREPRINT
对 REPRINT 特殊字符 (Ctrl-r) 建立索引,如果设置了 ICANONIEXTEN 标志,那么将在输入时识别该字符。 REPRINT 字符将重新打印所有未读的字符,这些字符前面有一个新行。 如果设置了 ICANONIEXTEN 标志,那么在处理时将废弃 REPRINT 字符。
VDISCRD
对 DISCARD 特殊字符 (Ctrl-o) 建立索引,如果设置了 ICANONIEXTEN 标志,那么会在输入时识别该字符。 DISCARD 字符会导致后续输出被废弃,直到输入另一个 DISCARD 字符,更多输入到达或程序清除该条件为止。 如果设置了 ICANONIEXTEN 标志,那么在处理时将废弃 DISCARD 字符。
VWERSE
对 WERASE 特殊字符 (Ctrl-w) 建立索引,如果设置了 ICANONIEXTEN 标志,那么会在输入时识别该字符。 WERASE 字符导致前面的单词被擦除。 WERASE 字符不会擦除超出由 NL , EOL , EOF 或 EOL2 字符定界的行开头的内容。 如果设置了 ICANONIEXTEN 标志,那么在处理时将废弃 WERASE 字符。
VLNEXT
对 LNEXT (literal next) 特殊字符 (Ctrl-v) 建立索引,如果设置了 ICANONIEXTEN 标志,那么会在输入时识别该特殊字符。 LNEXT 字符会导致忽略下一个字符的特殊含义,以便可以输入字符而不被系统解释。 如果设置了 ICANON欧共体人道处IEXTEN 标志,那么处理后的 LNEXT 字符将替换为 ^ -Backspace 序列。
VMIN
最小 值建立索引,该值不是特殊字符。 在讨论 "ldterm Line Discussion" 常规编程概念: 编写和调试营销计划中的非规范方式输入处理时描述了 最小 值的使用。
VTIME
时间 值建立索引,该值不是特殊字符。 在讨论 "ldterm Line Discussion" 常规编程概念: 编写和调试营销计划中的非规范方式输入处理时描述了 时间 值的使用。

下列控制字符的字符值可以更改:

描述
intr EOF STOP DISCARD
QUIT EOL susp werase
ERASE EOL2 dsusp lnext
KILL 启动 reprint reprint

ERASE , KILL 和 EOF 字符也可以进行转义 (前面加上反斜杠) ,这样就不会执行特殊处理。

参数值定义

tcsetattr 子例程的 OptionalActions 参数的以下值也在 termios.h 文件中定义:

描述
TCSANOW 立即从引用的 泰尔米奥斯 结构设置与终端关联的参数。
TCSADRAIN 在从 泰尔米奥斯 结构设置终端参数之前,等待直到写入对象文件的所有输出都已传输。
TCSALUSH 在从 泰尔米奥斯 结构设置终端参数之前,等待直到写入对象文件的所有输出都已传输,并且直到接收到但未读的所有输入都已废弃。

此头文件中还定义了 tcflush 子例程的 QueueSelector 参数的以下值:

描述
TCIFLUSH 清空已接收但未读取的数据。
TCOFLUSH 清空已写入但未传输的数据。
TCIOFLUSH 对已接收但未读取的数据以及已写入但未传输的数据进行清仓。

tcflow 子例程的 Action 参数的以下值也在 termios.h 文件中定义:

描述
TCOOFF 暂挂 Tcflow 子例程中指定的对象文件的数据输出。
TCOON 重新启动已由 TCOOFF 操作暂挂的数据输出。
TCIFOFF 发送停止字符,以停止终端设备的数据传输。
TCION 发送一个开始字符,以启动或重新启动终端设备的数据传输。

调制解调器控制操作

以下用于调制解调器控制的 ioctl 操作是 POSIX 线路规程接口的扩展。 要在程序中使用这些操作,该程序必须包含 ioctl.h 文件的 #include 语句。

描述
TIOCMBIS 此命令的自变量是一个指向整数的指针,该整数打开由整数掩码值指定的控制行。 其他控制线路不受影响。
TIOCMBIC 此命令的自变量是一个指向整数的指针,该整数关闭由整数掩码值指定的控制行。 其他控制线路不受影响。
TIOCMGET 获取所有调制解调器位。 此命令的自变量是一个指向整数的指针,该整数存储调制解调器状态行的当前状态。 受支持的调制解调器状态和调制解调器控制线路取决于硬件和硬件的设备驱动程序的功能。
TIOCMSET 设置所有调制解调器位。 此命令的自变量是指向一个整数的指针,该整数包含一组新的调制解调器位。 调制解调器控制位使用这些位来打开或关闭调制解调器控制线路,这取决于该线路的位是已设置还是已清除。 忽略任何调制解调器状态位。 受支持的实际调制解调器控制线路取决于硬件和硬件的设备驱动程序的能力。

该整数指定下列其中一个调制解调器控制或状态行,调制解调器控制 ioctl 命令在这些行上运行:

TIOCM_LE
启用线路
TIOCM_DTR
数据集就绪
TIOCM_RTS
请求发送
TIOCM_ST
辅助传输
TIOCM_SR
辅助接收
TIOCM_CTS
清除发送
TIOCM_CAR
载波检测
TIOCM_CD
TIOCM_CAR
TIOCM_RNG
TIOCM_REI
TIOCM_RNG
TIOCM_DSR
数据集就绪。
TIOCMIWAIT 请等待调制解调器状态线路更改状态。
该参数是一个指向整数掩码值的指针,该整数掩码值指定要等待状态更改的调制解调器状态行,并且可以由下列一个或多个值组成:
TIOCM_CTS
清除发送
TIOCM_CAR
载波检测
TIOCM_CD
TIOCM_CAR
TIOCM_RNG
TIOCM_REI
TIOCM_RNG
TIOCM_DSR
数据集就绪。
请求将阻塞到其中一个指定的行更改状态,然后返回到调用者。 请注意,即使设置了 O_NDELAYO_NONBLOCK ,此 ioctl 块也是如此。

如果指定的所有行都未更改状态,那么 ioctl 可以无限期地阻止,因此它应该与 警报 () 计时器一起使用。

如果指定了 TIOCM_RNGTIOCM_RI ,那么由于硬件限制,仅当状态行从 on 过渡到 off 时才会报告该过渡。
注:ioctl 的正确操作取决于正确的连线。