Man page - tcflush(3)

Packages contains this manual

Available languages:

en fr ja

Manual

TERMIOS

名 前
書 式
説 明
termios 構 造 体
端 末 の 設 定 の 取 得 と 変 更
カ ノ ニ カ ル モ ー ド と 非 カ ノ ニ カ ル モ ー ド
Raw mode
ラ イ ン 制 御
ラ イ ン 速 度
返 り 値
属 性
準 拠
注 意
バ グ
関 連 項 目
こ の 文 書 に つ い て

名 前

termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed - タ ー ミ ナ ル 属 性 の 取 得 ・ 設 定 、 ラ イ ン 制 御 、 ボ ー レ ー ト の 取 得 ・ 設 定

書 式

#include <termios.h>
#include <unistd.h>

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 );

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):

cfsetspeed (), cfmakeraw ():
glibc 2.19 以 降 :
_DEFAULT_SOURCE
glibc 2.19 以 前 :
_BSD_SOURCE

説 明

termios 関 数 群 は 、 非 同 期 通 信 ポ ー ト を 制 御 す る た め の 汎 用 タ ー ミ ナ ル イ ン タ ー フ ェ ー ス で あ る 。

termios 構 造 体

こ こ に 示 さ れ て い る 関 数 の 多 く は 、 引 数 に termios_p を 用 い る 。 こ の 引 数 は termios 構 造 体 へ の ポ イ ン タ ー で あ る 。 こ の 構 造 体 に は 少 な く と も 以 下 に 示 す メ ン バ が 含 ま れ る :

tcflag_t c_iflag; /* input modes */
tcflag_t c_oflag; /* output modes */
tcflag_t c_cflag; /* control modes */
tcflag_t c_lflag; /* local modes */
cc_t c_cc[NCCS]; /* special characters */

以 下 に 、 こ れ ら の フ ィ ー ル ド に 割 り 当 て 可 能 な 値 に つ い て 説 明 す る 。 最 初 の 4 つ の ビ ッ ト マ ス ク フ ィ ー ル ド で は 、 関 係 す る フ ラ グ の 定 義 の い く つ か は 、 特 定 の 機 能 検 査 マ ク ロ ( feature_test_macros (7) 参 照 ) が 定 義 さ れ た 場 合 に の み 公 開 さ れ る 。 必 要 な 機 能 検 査 マ ク ロ は 角 括 弧 ("[]") 内 に 書 か れ て い る 。

以 下 の 説 明 で 、 "POSIX に は な い " は そ の 値 が POSIX.1-2001 で 規 定 さ れ て い な い こ と を 意 味 し 、 "XSI" は そ の 値 が POSIX.1-2001 の XSI 拡 張 で 規 定 さ れ て い る こ と を 意 味 す る 。

c_iflag フ ラ グ に は 以 下 の 要 素 を 指 定 で き る :

IGNBRK

入 力 中 の BREAK 信 号 を 無 視 す る 。

BRKINT

IGNBRK が 設 定 さ れ て い る 場 合 は 、 BREAK 信 号 は 無 視 さ れ る 。 IGNBRK が 設 定 さ れ て い な い が 、 BRKINT が 設 定 さ れ て い る 場 合 は 、 BREAK 信 号 に よ っ て 入 出 力 キ ュ ー が フ ラ ッ シ ュ さ れ 、 さ ら に 、 端 末 が フ ォ ア グ ラ ウ ン ド プ ロ セ ス グ ル ー プ の 制 御 端 末 の 場 合 は 、 フ ォ ア グ ラ ウ ン ド プ ロ セ ス グ ル ー プ に SIGINT が 送 ら れ る 。 IGNBRK BRKINT も 設 定 さ れ て い な い 場 合 、 BREAK を ヌ ル バ イ ト ('\0') と し て 読 み 込 む 。 た だ し 、 PARMRK が 設 定 さ れ て い る 場 合 は \377 \0 \0 の シ ー ケ ン ス と し て 読 み 込 む 。

IGNPAR

フ レ ー ム エ ラ ー お よ び パ リ テ ィ エ ラ ー を 無 視 す る 。

PARMRK

If this bit is set, input bytes with parity or framing errors are marked when passed to the program. This bit is meaningful only when INPCK is set and IGNPAR is not set. The way erroneous bytes are marked is with two preceding bytes, \377 and \0. Thus, the program actually reads three bytes for one erroneous byte received from the terminal. If a valid byte has the value \377, and ISTRIP (see below) is not set, the program might confuse it with the prefix that marks a parity error. Therefore, a valid byte \377 is passed to the program as two bytes, \377 \377, in this case.

IGNPAR PARMRK も 設 定 さ れ て い な い 場 合 、 パ リ テ ィ エ ラ ー あ る い は フ レ ー ム エ ラ ー の 発 生 し た 文 字 を \0 と し て 読 み 込 む 。

INPCK

入 力 の パ リ テ ィ チ ェ ッ ク を 有 効 に す る 。

ISTRIP

8 ビ ッ ト 目 を 落 と す 。

INLCR

入 力 の NL (New Line: 改 行 文 字 ) を CR (Carriage Return: 復 帰 文 字 ) に 置 き 換 え る 。

IGNCR

入 力 の CR を 無 視 す る 。

ICRNL

( IGNCR が 設 定 さ れ て い な い 場 合 ) 入 力 の CR を NL に 置 き 換 え る 。

IUCLC

(POSIX に は な い ) 入 力 の 大 文 字 を 小 文 字 に 置 き 換 え る 。

IXON

出 力 の XON/XOFF フ ロ ー 制 御 を 有 効 に す る 。

IXANY

(XSI) 任 意 の 文 字 を 入 力 す る と 、 停 止 し て い た 出 力 を 再 開 す る (デ フ ォ ル ト で は 、 START 文 字 で の み 出 力 が 再 開 さ れ る )。

IXOFF

入 力 の XON/XOFF フ ロ ー 制 御 を 有 効 に す る 。

IMAXBEL

(POSIX に は な い ) 入 力 キ ュ ー が 一 杯 の 時 に ベ ル を 鳴 ら す 。 Linux で は こ の ビ ッ ト は 実 装 さ れ て お ら ず 、 常 に セ ッ ト さ れ て い る か の よ う に 振 舞 う 。

IUTF8 (Linux 2.6.4 以 降 )

(POSIX に は な い ) 入 力 が UTF8 で あ る ; こ れ に よ り cooked mode で 文 字 削 除 (character-erase) を 正 し く 機 能 さ せ る こ と が で き る 。

c_oflag フ ラ グ に は 以 下 の 要 素 を 指 定 で き る :

OPOST

実 装 に 依 存 し た 出 力 処 理 を 有 効 に す る 。

OLCUC

(POSIX に は な い ) 出 力 時 に 小 文 字 を 大 文 字 に 変 換 す る 。

ONLCR

(XSI) 出 力 の NL を CR-NL に 置 き 換 え る 。

OCRNL

出 力 の CR を NL に 置 き 換 え る 。

ONOCR

0 桁 目 で CR を 出 力 し な い 。

ONLRET

CR を 出 力 し な い 。

OFILL

転 送 時 間 を 遅 ら せ る の で は な く 、 補 填 文 字 (fill character) を 送 る 。 (訳 注 :特 定 の 文 字 に 対 し て 、 端 末 側 の 処 理 を 待 つ た め に 転 送 を 一 定 時 間 遅 ら せ る こ と が で き る 。 ま た 、 OFILL を 指 定 す る と 転 送 を 遅 ら せ る 代 わ り に 補 填 文 字 を 送 る 。 )

OFDEL

補 填 文 字 を ASCII DEL に す る 。 こ の フ ラ グ が 設 定 さ れ て い な い 場 合 は ASCII NUL ('\0') に な る 。 (Linux で は 実 装 さ れ て い な い )

NLDLY

NL の 遅 延 を 設 定 す る 。 値 は NL0 (遅 延 な し ) お よ び NL1 で あ る 。 [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE が 必 要 ]

CRDLY

CR の 遅 延 を 設 定 す る 。 値 は CR0 (遅 延 な し ), CR1 , CR2 , CR3 で あ る 。 [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE が 必 要 ]

TABDLY

水 平 タ ブ (horizontal tab) の 遅 延 を 設 定 す る 。 値 は TAB0 , TAB1 , TAB2 , TAB3 (ま た は XTABS ; た だ し 「 バ グ 」 を 参 照 ) で あ る 。 [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE が 必 要 ] XTAB3 (こ れ は XTABS と 同 じ で あ る ) の 値 は タ ブ を ス ペ ー ス 何 個 に 変 換 す る か を 示 す (タ ブ は 8 桁 毎 に 止 ま る )。

BSDLY

後 退 (backspace) の 遅 延 を 設 定 す る 。 値 は BS0 (遅 延 な し ) あ る い は BS1 で あ る 。 (実 装 さ れ た こ と は な い ) [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE が 必 要 ]

VTDLY

垂 直 タ ブ (vertical tab) の 遅 延 を 設 定 す る 。 値 は VT0 (遅 延 な し ) あ る い は VT1 で あ る 。

FFDLY

頁 送 り (form feed) の 遅 延 を 設 定 す る 。 値 は FF0 (遅 延 な し ) あ る い は FF1 で あ る 。 [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE が 必 要 ]

c_cflag フ ラ グ は 以 下 の 通 り :

CBAUD

(POSIX に は な い ) ボ ー レ ー ト マ ス ク (4+1 ビ ッ ト )。 [ _BSD_SOURCE _SVID_SOURCE が 必 要 ]

CBAUDEX

(POSIX に は な い ) 追 加 の ボ ー レ ー ト マ ス ク (1 ビ ッ ト )。 CBAUD に 含 ま れ て い る 。 [ _BSD_SOURCE _SVID_SOURCE が 必 要 ]

(POSIX で は 、 termios 構 造 体 に 格 納 さ れ た ボ ー レ ー ト は 正 確 な も の で は な く 、 ボ ー レ ー ト を 操 作 す る た め に cfgetispeed () と cfsetispeed () が 提 供 さ れ て い る 。 c_cflag 内 の CBAUD で 選 択 さ れ た ビ ッ ト を 使 う シ ス テ ム も あ れ ば 、 sg_ispeed sg_ospeed と い っ た 独 立 し た フ ィ ー ル ド を 使 う も の も あ る 。 )

CSIZE

文 字 サ イ ズ を 設 定 す る 。 値 は CS5 , CS6 , CS7 , CS8 で あ る 。

CSTOPB

ス ト ッ プ ビ ッ ト を 1 で は な く 2 に す る 。

CREAD

受 信 を 有 効 に す る 。

PARENB

出 力 に パ リ テ ィ を 付 加 し 、 入 力 の パ リ テ ィ チ ェ ッ ク を 行 う 。

PARODD

設 定 さ れ る と 、 入 力 お よ び 出 力 に 対 す る パ リ テ ィ が 奇 数 パ リ テ ィ と な る 。 設 定 さ れ な い 場 合 、 偶 数 パ リ テ ィ が 使 用 さ れ る 。

HUPCL

最 後 の プ ロ セ ス が デ バ イ ス を ク ロ ー ズ し た 後 、 モ デ ム の 制 御 線 を low に す る (切 断 す る )。

CLOCAL

モ デ ム の 制 御 線 を 無 視 す る 。

LOBLK

(POSIX に は な い ) 現 在 の シ ェ ル 層 以 外 か ら の 出 力 を 抑 制 す る 。

shl (シ ェ ル 層 ) で 用 い ら れ る 。 (Linux で は 実 装 さ れ て い な い )

CIBAUD

(POSIX に は な い ) 入 力 速 度 の マ ス ク 。 CIBAUD ビ ッ ト の た め の 値 は CBAUD ビ ッ ト の た め の 値 と 同 じ で あ り 、 左 に IBSHIFT ビ ッ ト シ フ ト し た も の で あ る 。 [ _BSD_SOURCE _SVID_SOURCE が 必 要 ] (Linux で は 実 装 さ れ て い な い )

CMSPAR

(POSIX に は な い ) (一 部 の シ リ ア ル デ バ イ ス で サ ポ ー ト さ れ て い る ) 「 ス テ ィ ッ ク (stick)」 パ リ テ ィ (マ ー ク /ス ペ ー ス パ リ テ ィ )を 使 用 す る 。 PARODD が 設 定 さ れ た 場 合 パ リ テ ィ ビ ッ ト は 常 に 1 と な り 、 設 定 さ れ な い 場 合 は 常 に 0 と な る 。 [ _BSD_SOURCE _SVID_SOURCE が 必 要 ]

CRTSCTS

(POSIX に は な い ) RTS/CTS (ハ ー ド ウ ェ ア ) フ ロ ー 制 御 を 有 効 に す る 。 [ _BSD_SOURCE _SVID_SOURCE が 必 要 ]

c_lflag フ ラ グ は 以 下 の 通 り :

ISIG

INTR, QUIT, SUSP, DSUSP の 文 字 を 受 信 し た 時 、 対 応 す る シ グ ナ ル を 発 生 さ せ る 。

ICANON

カ ノ ニ カ ル モ ー ド を 有 効 に す る (下 記 参 照 )。

XCASE

(POSIX に は な い ; Linux で は 対 応 し て い な い ) ICANON が 同 時 に 設 定 さ れ た 場 合 、 端 末 は 大 文 字 の み が 有 効 で あ る 。 入 力 さ れ た 文 字 は \ が 付 い た 文 字 を 除 い て 小 文 字 に 変 換 さ れ る 。 出 力 時 は 、 大 文 字 の 前 に \ が 付 き 、 小 文 字 は 大 文 字 に 変 換 さ れ る 。 [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE が 必 要 ]

ECHO

入 力 さ れ た 文 字 を エ コ ー す る 。

ECHOE

ICANON も 同 時 に 設 定 さ れ た 場 合 、 ERASE 文 字 は 前 の 文 字 を 削 除 し 、 WERASE 文 字 は 前 の 単 語 を 削 除 す る 。

ECHOK

ICANON も 同 時 に 設 定 さ れ た 場 合 、 KILL 文 字 は 現 在 の 行 を 削 除 す る 。

ECHONL

ICANON も 同 時 に 設 定 さ れ た 場 合 、 ECHO が 設 定 さ れ て い な く て も NL 文 字 を エ コ ー す る 。

ECHOCTL

(POSIX に は な い ) ECHO も 同 時 に 設 定 さ れ た 場 合 、 TAB, NL, START, STOP 以 外 の 端 末 特 殊 文 字 が ^X と し て エ コ ー さ れ る 。 X は 特 殊 文 字 に ASCII コ ー ド で 0x40 を 足 し た 文 字 で あ る 。 例 え ば 文 字 0x08 (BS) は ^H と エ コ ー さ れ る 。 [ _BSD_SOURCE _SVID_SOURCE が 必 要 ]

ECHOPRT

(POSIX に は な い ) ICANON お よ び ECHO が 同 時 に 設 定 さ れ て い る 場 合 、 削 除 さ れ た 文 字 も 表 示 さ れ る 。 [ _BSD_SOURCE _SVID_SOURCE が 必 要 ]

ECHOKE

(POSIX に は な い ) ICANON も 設 定 さ れ た 場 合 、 KILL が 行 の 各 文 字 を 消 去 す る 代 わ り に エ コ ー さ れ る 。 こ れ は ECHOE お よ び ECHOPRT を 指 定 す る こ と と 等 し い 。 [ _BSD_SOURCE _SVID_SOURCE が 必 要 ]

DEFECHO

(POSIX に は な い ) プ ロ セ ス が 読 み 込 ん だ と き に だ け エ コ ー す る 。 (Linux で は 実 装 さ れ て い な い )

FLUSHO

(POSIX に は な い ; Linux で は 対 応 し て い な い ) 出 力 を フ ラ ッ シ ュ す る 。 こ の フ ラ グ は DISCARD 文 字 を 入 力 す る こ と で 切 替 え ら れ る 。 [ _BSD_SOURCE _SVID_SOURCE が 必 要 ]

NOFLSH

INT, QUIT, SUSP 文 字 に 対 応 す る シ グ ナ ル を 発 生 す る 際 の 入 力 ・ 出 力 キ ュ ー の フ ラ ッ シ ュ を 無 効 に す る 。

TOSTOP

バ ッ ク グ ラ ウ ン ド プ ロ セ ス の プ ロ セ ス グ ル ー プ で 制 御 端 末 へ 文 字 を 出 力 し よ う と し て い る プ ロ セ ス に 対 し て SIGTTOU シ グ ナ ル を 送 る 。

PENDIN

(POSIX に は な い ; Linux で は 対 応 し て い な い ) 次 の 文 字 を 読 み 込 ん だ 時 、 入 力 キ ュ ー 中 の 全 文 字 を 再 表 示 す る 。 ( bash (1) は 入 力 行 を こ の よ う に 処 理 し て い る 。 ) [ _BSD_SOURCE _SVID_SOURCE が 必 要 ]

IEXTEN

実 装 依 存 の 入 力 処 理 を 有 効 に す る 。 こ の フ ラ グ は 、 特 殊 文 字 で あ る EOL2, LNEXT, REPRINT, WERASE や 、 IUCLC フ ラ グ を 有 効 に す る た め に 必 要 で あ る 。

c_cc 配 列 は 端 末 特 殊 文 字 を 定 義 し て い る 。 シ ン ボ ル の 一 覧 (初 期 値 ) と 意 味 は 以 下 の 通 り 。
VDISCARD

(POSIX に は な い ; Linux で は 対 応 し て い な い ; 017, SI, Ctrl-O) 未 送 信 バ ッ フ ァ ー の 内 容 の 破 棄 /保 存 を 切 り 替 え る 。 IEXTEN が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VDSUSP

(POSIX に は な い ; Linux で は 対 応 し て い な い ; 031, EM, Ctrl-Y) 遅 延 中 断 文 字 (DSUSP)。 ユ ー ザ ー プ ロ グ ラ ム か ら 文 字 が 読 み 込 ま れ た 時 に SIGTSTP シ グ ナ ル を 送 る 。 IEXTEN ISIG が セ ッ ト さ れ て い て 、 シ ス テ ム が ジ ョ ブ 制 御 に 対 応 し て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VEOF

(004, EOT, Ctrl-D) フ ァ イ ル 終 端 文 字 (EOF)。 よ り 正 確 に は 、 tty バ ッ フ ァ ー の 内 容 を 行 末 を 待 た ず に ユ ー ザ ー プ ロ グ ラ ム に 送 る 。 こ れ が 行 の 最 初 の 文 字 だ っ た 場 合 、 ユ ー ザ ー プ ロ グ ラ ム の read (2) は 0 を 返 し 、 フ ァ イ ル 終 端 で あ る こ と を 知 ら せ る 。 ICANON が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VEOL

(0, NUL) 追 加 の 行 末 文 字 (EOL)。 ICANON が セ ッ ト さ れ て い る 場 合 に 認 識 す る 。

VEOL2

(POSIX に は な い ; 0, NUL) 追 加 の 行 末 文 字 (EOL2)。 ICANON が セ ッ ト さ れ て い る 場 合 に 認 識 す る 。

VERASE

(0177, DEL, rubout か 010, BS, Ctrl-H か #) 消 去 文 字 (ERASE)。 こ れ に よ り 、 直 前 の 未 消 去 文 字 を 消 去 す る 。 し か し 、 EOF や 行 頭 を 超 え て は 消 去 し な い 。 ICANON が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VINTR

(003, ETX, Ctrl-C か 0177, DEL, rubout) 割 り 込 み 文 字 (INTR)。 SIGINT シ グ ナ ル を 送 る 。 ISIG が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VKILL

(025, NAK, Ctrl-U か Ctrl-X か @) 完 全 消 去 文 字 (KILL)。 直 前 の EOF か 行 頭 以 降 の 全 て の 入 力 を 消 去 す る 。 ICANON が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VLNEXT

(POSIX に は な い ; 026, SYN Ctrl-V) リ テ ラ ル (LNEXT)。 次 の 入 力 文 字 を エ ス ケ ー プ し 、 特 別 な 意 味 が あ っ て も 解 釈 し な い 。 IEXTEN が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VMIN

非 カ ノ ニ カ ル 読 み 込 み 時 の 最 小 文 字 数 (MIN)。

VQUIT

(034, FS, Ctrl-\) 終 了 文 字 (QUIT)。 SIGQUIT シ グ ナ ル を 送 る 。 ISIG が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VREPRINT

(POSIX に は な い ; 022, DC2, Ctrl-R) ま だ 読 み 込 ん で い な い 文 字 列 を 再 表 示 す る (REPRINT)。 ICANON IEXTEN が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VSTART

(021, DC1, Ctrl-Q) 開 始 文 字 (START)。 停 止 文 字 で 停 止 し た 出 力 を 再 開 す る 。 IXON が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VSTATUS

(POSIX に は な い ; Linux で は 対 応 し て い な い ; 状 態 要 求 : 024, DC4, Ctrl-T) 状 態 文 字 (STATUS)。 端 末 で の 状 態 情 報 を 表 示 す る 。 表 示 さ れ る 情 報 に は 、 フ ォ ア グ ラ ウ ン ド プ ロ セ ス の 状 態 や そ の プ ロ セ ス が 消 費 し た CPU 時 間 の 総 計 が 含 ま れ る 。 ま た 、 フ ォ ア グ ラ ウ ン ド プ ロ セ ス グ ル ー プ に シ グ ナ ル SIGINFO を 送 信 す る (Linux で は サ ポ ー ト さ れ て い な い )。

VSTOP

(023, DC3, Ctrl-S) 停 止 文 字 (STOP)。 開 始 文 字 が 入 力 さ れ る ま で 出 力 を 停 止 す る 。 IXON が 設 定 さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VSUSP

(032, SUB, Ctrl-Z) 中 断 文 字 (SUSP)。 SIGTSTP シ グ ナ ル を 送 る 。 ISIG が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

VSWTCH

(POSIX に は な い ; Linux で は 対 応 し て い な い ; 0, NUL) ス イ ッ チ 文 字 (SWTCH)。 System V で (シ ェ ル の ジ ョ ブ 制 御 の 前 に あ っ た ) shell layers で の シ ェ ル の 切 り 替 え に 用 い ら れ る 。

VTIME

非 カ ノ ニ カ ル 読 み 込 み 時 の タ イ ム ア ウ ト 時 間 (1/10 秒 単 位 ) (TIME)。

VWERASE

(POSIX に は な い ; 027, ETB, Ctrl-W) 単 語 消 去 (WERASE)。 ICANON IEXTEN が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

対 応 す る c_cc 要 素 の 値 を _POSIX_VDISABLE に 設 定 す る こ と で 、 そ れ ぞ れ の 端 末 制 御 文 字 を 無 効 に す る こ と が で き る 。

上 記 の シ ン ボ ル の 示 す 値 は 全 て 異 な る 。 た だ し 、 VTIME , VMIN は そ れ ぞ れ VEOL , VEOF と 同 じ 値 で あ る 。 非 カ ノ ニ カ ル モ ー ド で は 、 特 殊 文 字 の 意 味 は タ イ ム ア ウ ト の 意 味 に 変 わ る 。 VMIN VTIME の 説 明 に つ い て は 、 下 記 の 非 カ ノ ニ カ ル モ ー ド の 説 明 を 参 照 の こ と 。

端 末 の 設 定 の 取 得 と 変 更

tcgetattr () は fd に 関 す る パ ラ メ ー タ ー を 取 得 し 、 termios_p が 参 照 す る 構 造 体 termios に 設 定 す る 。 こ の 関 数 は バ ッ ク グ ラ ウ ン ド プ ロ セ ス か ら 呼 ば れ る こ と も あ る が 、 こ の 場 合 、 端 末 の 属 性 は フ ォ ア グ ラ ウ ン ド プ ロ セ ス に よ っ て 変 化 す る こ と も あ る 。

tcsetattr () は 端 末 に 関 連 し た パ ラ メ ー タ ー を 設 定 す る (ハ ー ド ウ ェ ア の 設 定 に 必 要 で 、 こ こ で 設 定 で き な い も の を 除 く )。 設 定 に は termios_p が 参 照 す る termios 構 造 体 を 用 い る 。 optional_actions に は 変 更 が 有 効 と な る タ イ ミ ン グ を 設 定 す る :
TCSANOW

た だ ち に 変 更 が 有 効 と な る 。

TCSADRAIN

fd へ の 出 力 が す べ て 転 送 さ れ た 後 に 変 更 が 有 効 に な る 。 こ の オ プ シ ョ ン は 出 力 に 影 響 す る パ ラ メ ー タ ー を 変 更 す る 時 に 使 用 す る べ き で あ る 。

TCSAFLUSH

パ ラ メ ー タ ー を 変 更 す る 前 に 、 fd へ の 出 力 が す べ て 転 送 さ れ 、 受 信 し た が ま だ 読 み 込 ん で い な い す べ て の 入 力 が 破 棄 さ れ る 。

カ ノ ニ カ ル モ ー ド と 非 カ ノ ニ カ ル モ ー ド

c_lflag ICANON フ ラ グ の 設 定 に よ り 、 端 末 が カ ノ ニ カ ル モ ー ド で 動 作 す る か が 決 定 さ れ る 。 ICANON が セ ッ ト さ れ た 場 合 、 カ ノ ニ カ ル モ ー ド (canonical mode) と な り 、 セ ッ ト さ れ な い 場 合 、 非 カ ノ ニ カ ル モ ー ド (noncanonical mode) と な る 。 デ フ ォ ル ト で は 、 ICANON は セ ッ ト さ れ る 。

カ ノ ニ カ ル モ ー ド で は 、 以 下 の よ う な 動 作 と な る 。

*

入 力 は 行 単 位 に 行 わ れ る 。 行 区 切 り 文 字 が 打 ち 込 ま れ た 時 点 で 、 入 力 行 が 利 用 可 能 と な る 。 行 区 切 り 文 字 は NL, EOL, EOL2 お よ び 行 頭 で の EOF で あ る 。 EOF 以 外 の 場 合 、 read (2) が 返 す バ ッ フ ァ ー に 行 区 切 り 文 字 も 含 め ら れ る 。

*

行 編 集 が 有 効 と な る (ERASE, KILL が 効 果 を 持 つ 。 IEXTEN フ ラ グ が 設 定 さ れ た 場 合 は 、 WERASE, REPRINT, LNEXT も 効 果 を 持 つ )。 read (2) は 最 大 で も 1行 の 入 力 し か 返 さ な い 。 read (2) が 要 求 し た バ イ ト 数 が 現 在 の 入 力 行 の バ イ ト 数 よ り も 少 な い 場 合 、 要 求 し た の と 同 じ バ イ ト 数 だ け が 読 み 込 ま れ 、 残 り の 文 字 は 次 回 の read (2) で 読 み 込 ま れ る 。

*

The maximum line length is 4096 chars (including the terminating newline character); lines longer than 4096 chars are truncated. After 4095 characters, input processing (e.g., ISIG and ECHO* processing) continues, but any input data after 4095 characters up to (but not including) any terminating newline is discarded. This ensures that the terminal can always receive more input until at least one line can be read.

In noncanonical mode input is available immediately (without the user having to type a line-delimiter character), no input processing is performed, and line editing is disabled. The read buffer will only accept 4095 chars; this provides the necessary space for a newline char if the input mode is switched to canonical. The settings of MIN ( c_cc[VMIN] ) and TIME ( c_cc[VTIME] ) determine the circumstances in which a read (2) completes; there are four distinct cases:
MIN == 0, TIME == 0 (ポ ー リ ン グ リ ー ド )

デ ー タ が 利 用 可 能 で あ れ ば 、 read (2) は す ぐ に 返 る 。 こ の と き の 返 り 値 は 、 そ の と き 利 用 可 能 な バ イ ト 数 か read (2) の 要 求 バ イ ト 数 の う ち 小 さ い 方 と な る 。 利 用 可 能 な デ ー タ が な い 場 合 read (2) は 0 を 返 す 。

MIN > 0, TIME == 0 (ブ ロ ッ キ ン グ リ ー ド )

read (2) は 、 利 用 可 能 な デ ー タ が MIN バ イ ト に 達 す る ま で 停 止 す る 。 返 り 値 は 最 大 で も 要 求 バ イ ト 数 で あ る 。

MIN == 0, TIME > 0 (タ イ ム ア ウ ト 付 き の 読 み 込 み )

TIME は タ イ マ ー の 上 限 を 規 定 し 、 単 位 は 1/10 秒 で あ る 。 タ イ マ ー は read (2) が 呼 ば れ た 時 点 で 開 始 さ れ る 。 read (2) が 返 る の は 、 少 な く と も 1バ イ ト の デ ー タ が 利 用 可 能 と な っ た 時 点 、 ま た は タ イ マ ー が 時 間 切 れ と な っ た 時 点 で あ る 。 入 力 が 全 く な く タ イ マ ー が 時 間 切 れ と な っ た 場 合 、 read (2) は 0 を 返 す 。 read (2) の 呼 び 出 し 時 に す で に 利 用 可 能 な デ ー タ が あ る 場 合 、 そ の 呼 び 出 し は 呼 び 出 し 直 後 に そ の デ ー タ が 到 着 し た か の よ う に 振 る 舞 う 。

MIN > 0, TIME > 0 (バ イ ト 間 の タ イ ム ア ウ ト 付 き の 読 み 出 し )

TIME は タ イ マ ー の 上 限 を 規 定 し 、 単 位 は 1/10 秒 で あ る 。 入 力 の 最 初 の バ イ ト が 利 用 可 能 に な っ た 後 は 、 新 た に 1バ イ ト 受 信 す る 度 に タ イ マ ー が リ セ ッ ト さ れ る 。 read (2) は 以 下 の 条 件 の い ず れ か を 満 た し た 場 合 に 返 る 。

*

MIN バ イ ト の デ ー タ を 受 信 し た 。

*

バ イ ト 間 タ イ マ ー が 時 間 切 れ に な っ た 。

*

read (2) で 要 求 さ れ た バ イ ト 数 の デ ー タ を 受 信 し た (POSIX で は こ の 終 了 条 件 は 規 定 さ れ て お ら ず 、 他 の い く つ か の 実 装 で は read (2) は こ の 条 件 で は 返 ら な い )。

タ イ マ ー は 最 初 の バ イ ト が 利 用 可 能 に な っ た 時 点 で 開 始 さ れ る の で 、 少 な く と も 1 バ イ ト は 読 み 出 さ れ る 。 read () の 呼 び 出 し 時 に す で に 利 用 可 能 な デ ー タ が あ る 場 合 、 そ の 呼 び 出 し は 呼 び 出 し 直 後 に そ の デ ー タ が 到 着 し た か の よ う に 振 る 舞 う 。

POSIX で は 、 O_NONBLOCK フ ァ イ ル 状 態 フ ラ グ が MIN や TIME の 設 定 よ り も 優 先 さ れ る か は 規 定 さ れ て い な い 。 O_NONBLOCK が 設 定 さ れ た 場 合 、 非 カ ノ ニ カ ル モ ー ド の read (2) は MIN や TIME の 設 定 に 関 わ ら ず す ぐ に 返 る 。 ま た 、 利 用 可 能 な デ ー タ が な い 場 合 、 POSIX で は 、 は 非 カ ノ ニ カ ル モ ー ド の read (2) が 0 を 返 す 方 法 も 、 errno EAGAIN を 設 定 し て -1 を 返 す こ と も 認 め ら れ て い る 。

Raw mode

cfmakeraw () は 、 端 末 を 昔 の Version 7 端 末 ド ラ イ バ の "raw" モ ー ド の よ う に 設 定 す る 。 入 力 は 文 字 単 位 に 可 能 で あ り 、 エ コ ー が 無 効 と な り 、 端 末 の 入 出 力 文 字 に 対 す る 特 殊 処 理 は す べ て 無 効 と な る 。 端 末 の 属 性 は 以 下 の よ う に 設 定 さ れ る :

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;

ラ イ ン 制 御

tcsendbreak () は 端 末 が 非 同 期 の シ リ ア ル デ ー タ 転 送 を 用 い て い る 場 合 に 、 連 続 し た 0の ビ ッ ト 列 を 一 定 間 隔 で 転 送 す る 。 duration が 0 の 場 合 は 、 0 の ビ ッ ト を 0.25 秒 以 上 、 0.5 秒 以 下 の 間 隔 で 転 送 す る 。 duration が 0 で な い 場 合 は 、 0 の ビ ッ ト を 実 装 依 存 の 時 間 間 隔 で 送 る 。

端 末 が 非 同 期 の シ リ ア ル デ ー タ 転 送 モ ー ド で な い 場 合 、 tcsendbreak () は 何 も 行 わ ず に 戻 る 。

tcdrain () は fd が 行 っ て い る 出 力 の 転 送 が 完 了 す る ま で 待 つ 。

tcflush () は fd が 行 っ て い る デ ー タ の 出 力 で ま だ 転 送 さ れ て い な い も の 、 あ る い は 受 信 し た が ま だ 入 力 し て い な い も の を 破 棄 す る 。 い ず れ を 行 う か は queue_selector の 値 で 定 め る :
TCIFLUSH

受 信 し た が 読 ん で い な い デ ー タ を フ ラ ッ シ ュ す る 。

TCOFLUSH

書 い た が 送 信 し て い な い デ ー タ を フ ラ ッ シ ュ す る 。

TCIOFLUSH

受 信 し た が 読 ん で い な い デ ー タ ・ 書 い た が 送 信 し て い な い デ ー タ 両 方 を フ ラ ッ シ ュ す る 。

tcflow () は fd で 指 定 さ れ た オ ブ ジ ェ ク ト に お け る デ ー タ の 送 信 あ る い は 受 信 を 一 時 的 に 中 断 す る 。 送 信 と 受 信 の ど ち ら か は 、 action で 決 ま る :

TCOOFF

出 力 の 中 断 。

TCOON

中 断 し た 出 力 の 再 開 。

TCIOFF

STOP 文 字 の 送 信 。 STOP 文 字 は 端 末 デ バ イ ス か ら シ ス テ ム へ の デ ー タ 送 信 を 停 止 す る 。

TCION

START 文 字 の 送 信 。 START 文 字 は 端 末 デ バ イ ス か ら シ ス テ ム へ の デ ー タ 送 信 を 開 始 す る 。

端 末 フ ァ イ ル が オ ー プ ン さ れ た と き の デ フ ォ ル ト で は 、 入 力 も 出 力 も 中 断 さ れ て い な い 。

ラ イ ン 速 度

ボ ー レ ー ト 関 数 は termios 構 造 体 中 の 入 出 力 ボ ー レ ー ト を 取 得 、 設 定 す る た め に 提 供 さ れ る 。 設 定 さ れ た 値 は tcsetattr () の 呼 び 出 し が 成 功 す る ま で は 有 効 で は な い 。

速 度 を B0 に 設 定 し た 場 合 、 モ デ ム は 停 止 (hang up) す る 。 B38400 に 該 当 す る 実 際 の ビ ッ ト レ ー ト は setserial (8) で 変 更 で き る 。

入 力 お よ び 出 力 ボ ー レ ー ト は termios 構 造 体 に 格 納 さ れ る 。

cfgetospeed () は termios_p が 示 し て い る termios 構 造 体 に 格 納 さ れ て い る 出 力 ボ ー レ ー ト を 返 す 。

cfsetospeed () は termios_p で 示 さ れ て い る termios 構 造 体 中 の 出 力 ボ ー レ ー ト を speed に 設 定 す る 。 値 は 以 下 の い ず れ か で な け れ ば な ら な い :

B0

B50

B75

B110

B134

B150

B200

B300

B600

B1200

B1800

B2400

B4800

B9600

B19200

B38400

B57600

B115200

B230400

0ボ ー ( B0 ) は 接 続 の 中 断 に 用 い ら れ る 。 B0が 指 定 さ れ た 場 合 、 モ デ ム の 制 御 線 は 使 用 さ れ な い 状 態 に な り 、 一 般 に は こ れ で 接 続 が 切 断 さ れ る 。 CBAUDEX は POSIX.1で 定 義 さ れ て い る 速 度 の 範 囲 外 (57600 お よ び そ れ 以 上 ) を 設 定 す る 。 す な わ ち 例 え ば B57600 & CBAUDEX は 0 で な い 。

cfgetispeed () は termios 構 造 体 中 の 入 力 ボ ー レ ー ト を 返 す 。

cfsetispeed () は termios 構 造 体 中 の 入 力 ボ ー レ ー ト を speed に 設 定 す る 。 speed に は 、 上 述 の cfsetospeed () の ボ ー レ ー ト 定 数 Bnnn の い ず れ か 一 つ を 指 定 し な け れ ば な ら な い 。 入 力 ボ ー レ ー ト が 0 に 設 定 さ れ た 場 合 、 入 力 ボ ー レ ー ト は 出 力 ボ ー レ ー ト と 同 じ 値 と な る 。

cfsetspeed () は 4.4BSD に よ る 拡 張 で あ る 。 こ の 関 数 は cfsetispeed () と 同 じ 引 数 を と り 、 入 出 力 両 方 の 速 度 を 設 定 す る 。

返 り 値

cfgetispeed () は termios 構 造 体 中 の 入 力 ボ ー レ ー ト を 返 す 。

cfgetospeed () は termios 構 造 体 中 の 出 力 ボ ー レ ー ト を 返 す 。

他 の す べ て の 関 数 の 戻 り 値 :

0

実 行 成 功 。

-1

実 行 失 敗 。 errno が エ ラ ー の 種 類 を 示 す 。

tcsetattr () は な ん ら か の 変 更 要 求 が 成 功 し た 場 合 に 成 功 を 返 す こ と に 注 意 。 従 っ て 、 複 数 の 変 更 を 行 っ た 場 合 に は 、 引 き 続 い て tcgetattr () を 呼 び 出 し て 全 て の 変 更 が 実 行 さ れ て い る か を 確 認 す る 必 要 が あ る か も し れ な い 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-41586-1.png

準 拠

tcgetattr (), tcsetattr (), tcsendbreak (), tcdrain (), tcflush (), tcflow (), cfgetispeed (), cfgetospeed (), cfsetispeed (), cfsetospeed () は POSIX.1-2001 で 規 定 さ れ て い る 。

cfmakeraw () と cfsetspeed () は 非 標 準 だ が 、 BSD で は 利 用 可 能 で あ る 。

注 意

UNIX V7 と そ の 後 の い く つ か の シ ス テ ム で は 、 ボ ー レ ー ト の 14 個 の リ ス ト で あ る B0, ..., B9600 の 後 ろ に EXTA, EXTB ("External A" と "External B") の 2 つ を 追 加 し て い る 。 多 く の シ ス テ ム で は さ ら に 高 速 な ボ ー レ ー ト の た め に リ ス ト を 拡 張 し て い る 。

tcsendbreak () で duration に 0 以 外 を 指 定 し た 場 合 の 効 果 は 様 々 で あ る 。 SunOS は duration * N 秒 の ブ レ ー ク を 規 定 し て い る 。 こ こ で N は 0.25 以 上 0.5 未 満 で あ る 。 Linux, AIX, DU, Tru64 は duration ミ リ 秒 の ブ レ ー ク を 送 信 す る 。 FreeBSD, NetBSD, HP-UX, MacOS は duration の 値 を 無 視 す る 。 Solaris と UnixWare で は 、 非 ゼ ロ の duration を 指 定 し た tcsendbreak () の 振 る 舞 い は tcdrain () と 同 様 で あ る 。

バ グ

On the Alpha architecture before Linux 4.16 (and glibc before 2.28), the XTABS value was different from TAB3 and it was ignored by the N_TTY line discipline code of the terminal driver as a result (because as it wasn’t part of the TABDLY mask).

関 連 項 目

reset (1), setterm (1), stty (1), tput (1), tset (1), tty (1), ioctl_console (2), ioctl_tty (2), setserial (8)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。