(POSIX に は な い ; Linux
で は 対 応 し て
い な い ; 0, NUL) ス イ
ッ チ 文 字 (SWTCH)。 System V
で (シ ェ ル の ジ
ョ ブ 制 御 の 前
に あ っ た ) shell layers
で の シ ェ ル の
切 り 替 え に 用
い ら れ る 。
非 カ ノ
ニ カ ル 読 み 込
み 時 の タ イ ム
ア ウ ト 時 間 (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) で 読 み 込 ま
れ る 。 非 カ ノ
ニ カ ル モ ー ド
で は 、 入 力 は
即 座 に 利 用 可
能 と な り (ユ ー
ザ ー は 行 区 切
り 文 字 を 打 ち
込 む 必 要 は な
い )、 入 力 処 理
は 実 行 さ れ ず
、 行 編 集 は 無
効 と な る 。 MIN
(c_cc[VMIN]) と TIME (c_cc[VTIME])
の 設 定 に よ り
、 read(2) が 完 了 す
る 条 件 が 決 定
さ れ る 。 4種 類
の 場 合 が あ る :
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()
を 呼 び 出 し て
全 て の 変 更 が
実 行 さ れ て い
る か を 確 認 す
る 必 要 が あ る
か も し れ な い
。
マ ル チ
ス レ ッ デ ィ ン
グ (pthreads(7) 参 照 ) 関
数 tcgetattr(), tcsetattr(),
tcsendbreak(), tcdrain(), tcflush(),
tcflow(), cfmakeraw(), cfgetispeed(),
cfgetospeed(), cfsetispeed(),
cfsetospeed(), cfsetspeed() は ス
レ ッ ド セ ー フ
で あ る 。
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() と
同 様 で あ る 。
reset(1),
setterm(1), stty(1), tput(1),
tset(1), console_ioctl(4),
tty_ioctl(4), setserial(8)
こ の man ペ
ー ジ は Linux man−pages
プ ロ ジ ェ ク ト
の リ リ ー ス 3.79 の
一 部 で あ る 。
プ ロ ジ ェ ク ト
の 説 明 と バ グ
報 告 に 関 す る
情 報 は
http://www.kernel.org/doc/man−pages/ に 書
か れ て い る 。
|