Manpages

名 前

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(): _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 が 送 ら れ る 。 IGNBRKBRKINT も 設 定 さ れ て い な い 場 合 、 BREAK を ヌ ル バ イ ト ('\0') と し て 読 み 込 む 。 た だ し 、 PARMRK が 設 定 さ れ て い る 場 合 は \377 \0 \0 の シ ー ケ ン ス と し て 読 み 込 む 。

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

PARMRK

IGNPAR が 設 定 さ れ て い な い 場 合 、 パ リ テ ィ エ ラ ー あ る い は フ レ ー ム エ ラ ー の 発 生 し た 文 字 の 前 に \377 \0 を 付 加 す る 。 IGNPARPARMRK も 設 定 さ れ て い な い 場 合 、 パ リ テ ィ エ ラ ー あ る い は フ レ ー ム エ ラ ー の 発 生 し た 文 字 を \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_ispeedsg_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 シ グ ナ ル を 送 る 。 IEXTENISIG が セ ッ ト さ れ て い て 、 シ ス テ ム が ジ ョ ブ 制 御 に 対 応 し て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

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)。 ICANONIEXTEN が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。

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)。 ICANONIEXTEN が セ ッ ト さ れ て い る 場 合 に 認 識 し 、 入 力 に は 渡 さ れ な い 。 対 応 す る c_cc 要 素 の 値 を _POSIX_VDISABLE に 設 定 す る こ と で 、 そ れ ぞ れ の 端 末 制 御 文 字 を 無 効 に す る こ と が で き る 。 上 記 の シ ン ボ ル の 示 す 値 は 全 て 異 な る 。 た だ し 、 VTIME, VMIN は そ れ ぞ れ VEOL, VEOF と 同 じ 値 で あ る 。 非 カ ノ ニ カ ル モ ー ド で は 、 特 殊 文 字 の 意 味 は タ イ ム ア ウ ト の 意 味 に 変 わ る 。 VMINVTIME の 説 明 に つ い て は 、 下 記 の 非 カ ノ ニ カ ル モ ー ド の 説 明 を 参 照 の こ と 。 端 末 の 設 定 の 取 得 と 変 更

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 を 返 す 方 法 も 、 errnoEAGAIN を 設 定 し て −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/ に 書 か れ て い る 。