termios

Autres langues

Langue: ja

Version: 2004-10-31 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

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

ÀâÌÀ

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];   /* control chars */

°Ê²¼¤Ë¡¢¤³¤ì¤é¤Î¥Õ¥£¡¼¥ë¥É¤Ë³ä¤êÅö¤Æ²Äǽ¤ÊÃͤˤĤ¤¤ÆÀâÌÀ¤¹¤ë¡£ ºÇ½é¤Î 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 ¤ò NULL ¥Ð¥¤¥È ('\0') ¤È¤·¤ÆÆɤ߹þ¤à¡£ ¤¿¤À¤·¡¢PARMRK ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï \377 \0 \0 ¤Î¥·¡¼¥±¥ó¥¹¤È¤·¤Æ Æɤ߹þ¤à¡£
IGNPAR
¥Õ¥ì¡¼¥à¥¨¥é¡¼¤ª¤è¤Ó¥Ñ¥ê¥Æ¥£¥¨¥é¡¼¤ò̵»ë¤¹¤ë¡£
PARMRK
IGNPAR ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥Ñ¥ê¥Æ¥£¥¨¥é¡¼¤¢¤ë¤¤¤Ï¥Õ¥ì¡¼¥à¥¨¥é¡¼ ¤ÎȯÀ¸¤·¤¿Ê¸»ú¤ÎÁ°¤Ë \377 \0 ¤òÉղ乤롣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) ¤ò Àµ¤·¤¯µ¡Ç½¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

POSIX.1 ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë c_oflag ¥Õ¥é¥°¤ò°Ê²¼¤Ë¼¨¤¹:

OPOST
¼ÂÁõ¤Ë°Í¸¤·¤¿½ÐÎϽèÍý¤òÍ­¸ú¤Ë¤¹¤ë¡£

»Ä¤ê¤Î c_oflag ¥Õ¥é¥°¤Ï¡¢Æõ­¤Î¤Ê¤¤¸Â¤ê POSIX.1-2001 ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£

OLCUC
(POSIX ¤Ë¤Ï¤Ê¤¤) ½ÐÎÏ»þ¤Ë¾®Ê¸»ú¤òÂçʸ»ú¤ËÊÑ´¹¤¹¤ë¡£
ONLCR
(XSI) ½ÐÎϤΠNL ¤ò CR-NL ¤ËÃÖ¤­´¹¤¨¤ë¡£
OCRNL
½ÐÎϤΠCR ¤ò NL ¤ËÃÖ¤­´¹¤¨¤ë¡£
ONOCR
0 ·åÌÜ¤Ç CR ¤ò½ÐÎϤ·¤Ê¤¤¡£
ONLRET
CR ¤ò½ÐÎϤ·¤Ê¤¤¡£
OFILL
žÁ÷»þ´Ö¤òÃ٤餻¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢ÊäŶʸ»ú (fill character) ¤òÁ÷¤ë¡£ (ÌõÃí:ÆÃÄê¤Îʸ»ú¤ËÂФ·¤Æ¡¢Ã¼Ëö¦¤Î½èÍý¤òÂԤĤ¿¤á¤ËžÁ÷¤ò°ìÄê»þ´Ö Ã٤餻¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤Þ¤¿¡¢ OFILL ¤ò»ØÄꤹ¤ë¤È žÁ÷¤òÃ٤餻¤ëÂå¤ï¤ê¤ËÊäŶʸ»ú¤òÁ÷¤ë¡£)
OFDEL
(POSIX ¤Ë¤Ï¤Ê¤¤) ÊäŶʸ»ú¤ò 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 ¤¬Æ±»þ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢Ã¼Ëö¤ÏÂçʸ»ú¤Î¤ß¤¬Í­¸ú¤Ç¤¢¤ë¡£ ÆþÎϤµ¤ì¤¿Ê¸»ú¤Ï \ ¤¬ÉÕ¤¤¤¿Ê¸»ú¤ò½ü¤¤¤Æ¾®Ê¸»ú¤ËÊÑ´¹¤µ¤ì¤ë¡£ ½ÐÎÏ»þ¤Ï¡¢Âçʸ»ú¤ÎÁ°¤Ë \ ¤¬ÉÕ¤­¡¢¾®Ê¸»ú¤ÏÂçʸ»ú¤ËÊÑ´¹¤µ¤ì¤ë¡£
ECHO
ÆþÎϤµ¤ì¤¿Ê¸»ú¤ò¥¨¥³¡¼¤¹¤ë¡£
ECHOE
ICANON ¤âƱ»þ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢ERASE ʸ»ú¤ÏÁ°¤Îʸ»ú¤òºï½ü¤·¡¢ WERASE ʸ»ú¤ÏÁ°¤Îñ¸ì¤òºï½ü¤¹¤ë¡£
ECHOK
ICANON ¤âƱ»þ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢KILL ʸ»ú¤Ï¸½ºß¤Î¹Ô¤òºï½ü¤¹¤ë¡£
ECHONL
ICANON ¤âƱ»þ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢ ECHO ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤â NL ʸ»ú¤ò¥¨¥³¡¼¤¹¤ë¡£
ECHOCTL
(POSIX ¤Ë¤Ï¤Ê¤¤) ECHO ¤âƱ»þ¤ËÀßÄꤵ¤ì¤¿¾ì¹ç¡¢ TAB, NL, START, STOP ¤Î ASCII À©¸æʸ»ú¤¬ ^X ¤È¤·¤Æ¥¨¥³¡¼¤µ¤ì¤ë¡£ X ¤ÏÀ©¸æʸ»ú¤è¤ê ASCII ¥³¡¼¥É¤Ç 0x10 ¤À¤±Â礭¤Êʸ»ú¤Ç¤¢¤ë¡£ Î㤨¤Ðʸ»ú 0x28 (BS) ¤Ï ^H ¤È¥¨¥³¡¼¤µ¤ì¤ë¡£ [_BSD_SOURCE ¤« _SVID_SOURCE ¤¬É¬Í×]
ECHOPRT
(POSIX ¤Ë¤Ï¤Ê¤¤) ICANON ¤ª¤è¤Ó IECHO ¤¬Æ±»þ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢ ºï½ü¤µ¤ì¤¿Ê¸»ú¤âɽ¼¨¤µ¤ì¤ë¡£ [_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
SIGINT, SIGQUIT, SIGSUSP ¥·¥°¥Ê¥ëȯÀ¸»þ¤ÎÆþÎÏ¡¦½ÐÎÏ¥­¥å¡¼¤Î¥Õ¥é¥Ã¥·¥å¤ò ̵¸ú¤Ë¤¹¤ë¡£
TOSTOP
¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹¥°¥ë¡¼¥×¤ÇÀ©¸æüËö¤Øʸ»ú¤ò½ÐÎϤ·¤è¤¦¤È ¤·¤Æ¤¤¤ë¥×¥í¥»¥¹¤ËÂФ·¤Æ SIGTTOU ¥·¥°¥Ê¥ë¤òÁ÷¤ë¡£
PENDIN
(POSIX ¤Ë¤Ï¤Ê¤¤; Linux ¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤) ¼¡¤Îʸ»ú¤òÆɤ߹þ¤ó¤À»þ¡¢ÆþÎÏ¥­¥å¡¼Ãæ¤ÎÁ´Ê¸»ú¤òºÆɽ¼¨¤¹¤ë¡£ (bash ¤ÏÆþÎϹԤò¤³¤Î¤è¤¦¤Ë½èÍý¤·¤Æ¤¤¤ë) [_BSD_SOURCE ¤« _SVID_SOURCE ¤¬É¬Í×]
IEXTEN
¼ÂÁõ°Í¸¤ÎÆþÎϽèÍý¤òÍ­¸ú¤Ë¤¹¤ë¡£ ¤³¤Î¥Õ¥é¥°¤Ï¡¢Æüìʸ»ú¤Ç¤¢¤ë EOL2, LNEXT, REPRINT, WERASE ¤ä¡¢ IUCLC ¥Õ¥é¥°¤òÍ­¸ú¤Ë¤¹¤ë¤¿¤á¤ËɬÍפǤ¢¤ë¡£

c_cc ÇÛÎó¤ÏÆüì¤ÊÀ©¸æʸ»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¡£ ¥·¥ó¥Ü¥ë¤Î°ìÍ÷ (½é´üÃÍ) ¤È°ÕÌ£¤Ï°Ê²¼¤ÎÄ̤ꡣ

VINTR
(003, ETX, Ctrl-C ¤« 0177, DEL, rubout) ³ä¤ê¹þ¤ßʸ»ú¡£SIGINT ¥·¥°¥Ê¥ë¤òÁ÷¤ë¡£ ISIG ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VQUIT
(034, FS, Ctrl-\) ½ªÎ»Ê¸»ú¡£SIGQUIT ¥·¥°¥Ê¥ë¤òÁ÷¤ë¡£ ISIG ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VERASE
(0177, DEL, rubout ¤« 010, BS, Ctrl-H ¤« #) ¾Ãµîʸ»ú¡£¤³¤ì¤Ë¤è¤ê¡¢Ä¾Á°¤Î̤¾Ãµîʸ»ú¤ò¾Ãµî¤¹¤ë¡£ ¤·¤«¤·¡¢EOF ¤ä¹ÔƬ¤òĶ¤¨¤Æ¤Ï¾Ãµî¤·¤Ê¤¤¡£ ICANON ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VKILL
(025, NAK, Ctrl-U ¤« Ctrl-X ¤« @) ´°Á´¾Ãµîʸ»ú¡£Ä¾Á°¤Î EOF ¤«¹ÔƬ°Ê¹ß¤ÎÁ´¤Æ¤ÎÆþÎϤò¾Ãµî¤¹¤ë¡£
VEOF
(004, EOT, Ctrl-D) ¥Õ¥¡¥¤¥ë½ªÃ¼Ê¸»ú¡£ ¤è¤êÀµ³Î¤Ë¤Ï¡¢tty ¥Ð¥Ã¥Õ¥¡¤ÎÆâÍƤò¹ÔËö¤òÂÔ¤¿¤º¤Ë¥æ¡¼¥¶¡¼¥×¥í¥°¥é¥à¤ËÁ÷¤ë¡£ ¤³¤ì¤¬¹Ô¤ÎºÇ½é¤Îʸ»ú¤À¤Ã¤¿¾ì¹ç¡¢¥æ¡¼¥¶¡¼¥×¥í¥°¥é¥à¤Î read(2) ¤Ï 0 ¤ò ÊÖ¤·¡¢¥Õ¥¡¥¤¥ë½ªÃ¼¤Ç¤¢¤ë¤³¤È¤òÃΤ餻¤ë¡£ ICANON ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VMIN
È󥫥Υ˥«¥ëÆɤ߹þ¤ß»þ¤ÎºÇ¾®Ê¸»ú¿ô¡£
VEOL
(0, NUL) ÄɲäιÔËöʸ»ú¡£ ICANON ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤¹¤ë¡£
VTIME
È󥫥Υ˥«¥ëÆɤ߹þ¤ß»þ¤Î¥¿¥¤¥à¥¢¥¦¥È»þ´Ö (1/10 ÉÃñ°Ì)¡£
VEOL2
(POSIX ¤Ë¤Ï¤Ê¤¤; 0, NUL) ÄɲäιÔËöʸ»ú¡£ ICANON ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤¹¤ë¡£
VSWTCH
(POSIX ¤Ë¤Ï¤Ê¤¤; Linux ¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤; 0, NUL) ¥¹¥¤¥Ã¥Áʸ»ú (shl ¤Ç¤Î¤ßÍѤ¤¤é¤ì¤ë)¡£
VSTART
(021, DC1, Ctrl-Q) ³«»Ïʸ»ú¡£Ää»ßʸ»ú¤ÇÄä»ß¤·¤¿½ÐÎϤòºÆ³«¤¹¤ë¡£ IXON ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VSTOP
(023, DC3, Ctrl-S) Ää»ßʸ»ú¡£³«»Ïʸ»ú¤¬ÆþÎϤµ¤ì¤ë¤Þ¤Ç½ÐÎϤòÄä»ß¤¹¤ë¡£ IXON ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VSUSP
(032, SUB, Ctrl-Z) ÃæÃÇʸ»ú¡£SIGTSTP ¥·¥°¥Ê¥ë¤òÁ÷¤ë¡£ ISIG ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VDSUSP
(POSIX ¤Ë¤Ï¤Ê¤¤; Linux ¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤; 031, EM, Ctrl-Y) ÃÙ±äÃæÃÇʸ»ú¡£¥æ¡¼¥¶¡¼¥×¥í¥°¥é¥à¤«¤éʸ»ú¤¬Æɤ߹þ¤Þ¤ì¤¿»þ¤Ë SIGTSTP ¥·¥°¥Ê¥ë¤òÁ÷¤ë¡£ IEXTEN ¤È ISIG ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Æ¡¢¥·¥¹¥Æ¥à¤¬¥¸¥ç¥ÖÀ©¸æ¤ËÂбþ¤·¤Æ¤¤¤ë¾ì¹ç¤Ë ǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VLNEXT
(POSIX ¤Ë¤Ï¤Ê¤¤; 026, SYN Ctrl-V) ¥ê¥Æ¥é¥ë¡£¼¡¤ÎÆþÎÏʸ»ú¤ò¥¨¥¹¥±¡¼¥×¤·¡¢ÆÃÊ̤ʰÕÌ£¤¬¤¢¤Ã¤Æ¤â²ò¼á¤·¤Ê¤¤¡£ IEXTEN ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VWERASE
(POSIX ¤Ë¤Ï¤Ê¤¤; 027, ETB, Ctrl-W) ñ¸ì¾Ãµî¡£ ICANON ¤È IEXTEN ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VREPRINT
(POSIX ¤Ë¤Ï¤Ê¤¤; 022, DC2, Ctrl-R) ¤Þ¤ÀÆɤ߹þ¤ó¤Ç¤¤¤Ê¤¤Ê¸»úÎó¤òºÆɽ¼¨¤¹¤ë¡£ ICANON ¤È IEXTEN ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VDISCARD
(POSIX ¤Ë¤Ï¤Ê¤¤; Linux ¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤; 017, SI, Ctrl-O) ̤Á÷¿®¥Ð¥Ã¥Õ¥¡¤ÎÆâÍƤÎÇË´þ/Êݸ¤òÀÚ¤êÂؤ¨¤ë¡£ IEXTEN ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ëǧ¼±¤·¡¢ÆþÎϤˤÏÅϤµ¤ì¤Ê¤¤¡£
VSTATUS
(POSIX ¤Ë¤Ï¤Ê¤¤; Linux ¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤; ¾õÂÖÍ×µá: 024, DC4, Ctrl-T)

¤³¤ì¤é¤Î¥·¥ó¥Ü¥ë¤Î¼¨¤¹ÃͤÏÁ´¤Æ°Û¤Ê¤ë¡£ ¤¿¤À¤·¡¢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) ¤È¤Ê¤ê¡¢ ¥»¥Ã¥È¤µ¤ì¤Ê¤¤¾ì¹ç¡¢È󥫥Υ˥«¥ë¥â¡¼¥É (non-canonical 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 ¤«Í×µá¥Ð¥¤¥È¿ô¤Î¾®¤µ¤¤Êý¤È¤Ê¤ë¡£
*
MIN == 0; TIME > 0: TIME ¤Ï¥¿¥¤¥Þ¤Î¾å¸Â¤òµ¬Äꤷ¡¢Ã±°Ì¤Ï 1/10 ÉäǤ¢¤ë¡£ ¥¿¥¤¥Þ¤Ï read(2) ¤¬¸Æ¤Ð¤ì¤¿»þÅÀ¤Ç³«»Ï¤µ¤ì¤ë¡£ read(2) ¤¬ÊÖ¤ë¤Î¤Ï¡¢¾¯¤Ê¤¯¤È¤â 1¥Ð¥¤¥È¤Î¥Ç¡¼¥¿¤¬ÍøÍѲÄǽ¤È¤Ê¤Ã¤¿»þÅÀ¡¢ ¤Þ¤¿¤Ï¥¿¥¤¥Þ¤¬»þ´ÖÀÚ¤ì¤È¤Ê¤Ã¤¿»þÅÀ¤Ç¤¢¤ë¡£ ÆþÎϤ¬Á´¤¯¤Ê¤¯¥¿¥¤¥Þ¤¬»þ´ÖÀÚ¤ì¤È¤Ê¤Ã¤¿¾ì¹ç¡¢ read(2) ¤Ï 0 ¤òÊÖ¤¹¡£
*
MIN > 0; TIME > 0: TIME ¤Ï¥¿¥¤¥Þ¤Î¾å¸Â¤òµ¬Äꤷ¡¢Ã±°Ì¤Ï 1/10 ÉäǤ¢¤ë¡£ ÆþÎϤκǽé¤Î¥Ð¥¤¥È¤¬ÍøÍѲÄǽ¤Ë¤Ê¤Ã¤¿¸å¤Ï¡¢ ¿·¤¿¤Ë 1¥Ð¥¤¥È¼õ¿®¤¹¤ëÅ٤˥¿¥¤¥Þ¤¬¥ê¥»¥Ã¥È¤µ¤ì¤ë¡£ read(2) ¤¬ÊÖ¤ë¤Î¤Ï¡¢MIN ¥Ð¥¤¥È¤«Í×µá¥Ð¥¤¥È¿ô¤Î¤¦¤Á¾¯¤Ê¤¤Êý¤Þ¤ÇÆɤ߽Фµ¤ì¤¿»þÅÀ¤«¡¢ ¥Ð¥¤¥È´Ö¥¿¥¤¥Þ¤¬»þ´ÖÀÚ¤ì¤È¤Ê¤Ã¤¿»þÅÀ¤Ç¤¢¤ë¡£ ¤ÏºÇ½é¤Î¥Ð¥¤¥È¤¬ÍøÍѲÄǽ¤Ë¤Ê¤é¤Ê¤¤¤È¥¿¥¤¥Þ¤Ï³«»Ï¤µ¤ì¤Ê¤¤¤Î¤Ç¡¢ ¾¯¤Ê¤¯¤È¤â 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() ¤ò¸Æ¤Ó½Ð¤·¤ÆÁ´¤Æ¤ÎÊѹ¹¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤«¤ò³Îǧ¤¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

Ãí°Õ

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() ¤ÈƱÍͤǤ¢¤ë¡£

´ØÏ¢¹àÌÜ

stty(1), console_ioctl(4), tty_ioctl(4), feature_test_macros(7), setserial(8)