12. Àú¼öÁØ Å͹̳¯ ÀÎÅÍÆäÀ̽º.
ÀÌ ÀåÀº Å͹̳¯ µð¹ÙÀ̽ºÀÇ ¿©·¯°¡Áö¸¦ Á¤ÇÏ´Â ÇÔ¼ö¸¦ ¼³¸íÇϰí ÀÖ´Ù. ´ç½ÅÀº ÀÌ ÇÔ¼öµéÀ» ÅëÇØ¼ ÀÔ·ÂÀÇ ¹ÝÇâ(echoing)À» ¾ø¾Ö´Â °Í°ú °°Àº ÀÏÀ» ÇÒ ¼ö ÀÖ°í; ¼Óµµ¿Í È帧Á¦¾î¿Í °°Àº Á÷·ÄÅë½Å ¹®ÀÚ µéÀ» ¼³Á¤ÇÒ ¼öµµ ÀÖ°í; ÆÄÀÏÀÇ ³¡, ÄÚ¸àµå-¶óÀÎ ÆíÁý, ½ÅÈ£ º¸³»±â, ±×¸®°í À¯»çÇÑ ½ÅÈ£ ÇÔ¼öµéÀ» À§ÇØ »ç¿ëµÈ ¹®ÀÚµéÀ» º¯°æÇÒ¼öµµ ÀÖ´Ù.
ÀÌ Àå¿¡ ÀÖ´Â ÇÔ¼öµéÀÇ ´ëºÎºÐÀº ÆÄÀÏ ±â¼úÀÚ »ó¿¡¼ µ¿ÀÛÇÑ´Ù. 8Àå[Low-Level I/O], 103 ÆäÀÌÁö ¿¡ ÆÄÀÏ ±â¼úÀÚ°¡ ¹«¾ùÀ̰í, Å͹̳¯ µð¹ÙÀ̽º¸¦ À§ÇØ ÆÄÀÏ ±â¼úÀÚ¸¦ ¾î¶»°Ô °³¹æÇÏ´ÂÁö¿¡ ´ëÇÑ ÀÚ¼¼ ÇÑ Á¤º¸°¡ ÀÖ´Ù.
12.1 Å͹̳¯ È®ÀÎÇϱâ.
ÀÌ Àå¿¡¼ ¼³¸íÇϰí ÀÖ´Â ÇÔ¼öµéÀº Å͹̳¯ µð¹ÙÀ̽º¿¡ ÇØ´çÇÏ´Â ÆÄÀÏ¿¡¼¸¸ µ¿ÀÛÇÑ´Ù. ´ç½ÅÀº isatty ÇÔ¼ö¸¦ »ç¿ëÇØ¼ Å͹̳¯°ú ¿¬°üµÈ ÆÄÀϱâ¼úÀÚÀÎÁö ¾î¶²Áö¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.
isatty ¿Í ttyname ÇÔ¼öµéÀ» À§ÇÑ ÇÁ·ÎÅäŸÀÔÀº Çì´õÆÄÀÏ 'unistd.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
ÇÔ¼ö : int isatty (int filedes)
ÀÌ ÇÔ¼ö´Â ¸¸ÀÏ filedes°¡ Å͹̳¯ µð¹ÙÀ̽º¿Í ¿¬°üµÈ ÆÄÀÏ ±â¼úÀÚÀ̸é 1À» ¸®ÅÏÇϰí, ±×·¸Áö ¾ÊÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù.
¸¸ÀÏ ÆÄÀϱâ¼úÀÚ°¡ Å͹̳¯°ú ¿¬°üµÇ¾î ÀÖ´Ù¸é, ´ç½ÅÀº ttynameÇÔ¼ö¸¦ »ç¿ëÇØ¼ ±× ¿¬°üµÈ ÆÄÀÏ ÀÌ ¸§À» ¾òÀ» ¼ö ÀÖ´Ù. ¶ÇÇÑ ctermidÇÔ¼ö¸¦ Âü°íÇ϶ó, ±×°ÍÀº 24.7.1Àý [Identifying the Termina.], 349 ÆäÀÌÁö¿¡ ÀÖ´Ù.
ÇÔ¼ö : char *ttyname(int filedes)
¸¸ÀÏ ÆÄÀÏ ±â¼úÀÚ filedes °¡ Å͹̳¯ µð¹ÙÀ̽º¿Í ¿¬°üµÇ¾î ÀÖÀ¸¸é, ttynaemÇÔ¼ö´Â Á¤ÀûÀ¸·Î ÇÒ´çµÇ °í, ³Î ¹®ÀÚ·Î ³¡³ª´Â ¹®ÀÚ¿¿¡ Å͹̳¯ ÆÄÀÏÀÇ ÆÄÀÏÀ̸§À» ÀúÀåÇÏ¿© ±×°ÍÀ» °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ¸®ÅÏ ÇÑ´Ù. ¸¸ÀÏ ÆÄÀÏ ±â¼úÀÚ°¡ Å͹̳¯°ú ¿¬°üµÇÁö ¾Ê°Å³ª, ¶Ç´Â ±× ÆÄÀÏÀ̸§À» ¾Ë¾Æ³¾¼ö ¾ø´Ù¸é, ³Î Æ÷ ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.
12.2 ÀÔ/Ãâ·Â Å¥.
ÀÌ Àý¿¡ ÀÖ´Â ¸¹Àº ÇÔ¼öµéÀº Å͹̳¯ µð¹ÙÀ̽ºÀÇ ÀԷ°ú Ãâ·Â Å¥(queues)¸¦ Á¶È¸ÇÑ´Ù. À̵é Å¥´Â ÀÔ/Ãâ·Â ½ºÆ®¸²µé¿¡ ÀÇÇØ ½ÇÇàµÈ ¹öÆÛ¸µÀÇ Ä¿³Î¾È¿¡ ÀÖ´Â ¹öÆÛ¸µÀÇ ÇÑ Çü½ÄÀÌ´Ù. ( 7Àå [I/O on Streams], 63 ÆäÀÌÁö ÂüÁ¶. )
Å͹̳¯ ÀԷ ť´Â ¶ÇÇÑ ¼±ÇàÀÔ·Â(typeahead) ¹öÆÛ·Î½á »ç¿ëµÇ¾îÁø´Ù. ±× Å¥´Â Å͹̳¯·ÎºÎÅÍ ¹Þ¾Æµé ¿© Á³Áö¸¸, ¾ÆÁ÷ ¾î´À ÇÁ·Î¼¼½º¿¡ ÀÇÇØ¼µµ ÀÐÇôÁöÁö ¾ÊÀº ¹®ÀÚµéÀº ÀúÀåÇÑ´Ù.
-- ¿ªÀÚÁÖ: typeahead : ¾î¶°ÇÑ ÀÌÀ¯·Î ÀÎÇÏ¿© ÀÔ·ÂÀÇ ¼Óµµ°¡ ÇÁ·Î±×·¥ÀÇ ÀÛ¾÷ó¸® ¼Óµµº¸´Ù ºü¸¦ °æ¿ì ¾ÆÁ÷ 󸮵ÇÁö ¸øÇÑ ÀԷµéÀº Àá½Ã ³»ºÎ¿¡ ÀÖ´Â ±â¾ïÀåÄ¡¿¡ ÀúÀåÇØµÎ°í ³ªÁß¿¡ ó¸®ÇÏ´Â ¹æ¹ý
Å͹̳¯ÀÇ ÀԷ ťÀÇ Å©±â´Â _POSIX_MAX_INPUT °ú MAX_INPUT ÆÄ¶ó¹ÌÅͷΠǥÇöµÈ´Ù; 27.6Àý [Limits for Files], 374 ÆäÀÌÁö ÂüÁ¶. ¸¸ÀÏ IXOFF ÀÔ·Â ¸ðµå ºñÆ®°¡ ¼³Á¤µÇ¾î¼ ÀÔ·Â È帧Á¦¾î°¡ °¡ ´ÉÇÏ´Ù¸é( 12.4.4Àý [Input Modes], 189 ÆäÀÌÁö ÂüÁ¶), Å͹̳¯ µå¶óÀ̹ö´Â Å¥°¡
¿À¹öÇ÷ο찡 ³ª´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ, ÇÊ¿äÇÒ ¶§ Å͹̳¯·Î STOP ¿Í START ¹®ÀÚµéÀ» Àü¼ÛÇÑ´Ù. ±×·¸Áö ¾Ê´Ù¸é, Å͹̳¯·ÎºÎÅÍ ³Ê¹« ¸¹Àº ÀÔ·ÂÀÌ ¼âµµÇÒ °æ¿ì ±× ÀÔ·ÂÀ» ÀÒ¾î¹ö¸±Áöµµ ¸ð¸¥´Ù. ( ÀÌ ·±»óȲÀº ¼ÕÀ¸·Î ŸÀÌÇÎÀ» ÅëÇØ ÀÔ·ÂÇϴ°ÍÀ¸·Î´Â ºÒ°¡´ÉÇÏ´Ù. )
Å͹̳¯ Ãâ·Â Å¥´Â ÀÔ·ÂÅ¥¿Í °°Áö¸¸, Ãâ·ÂÀ» À§ÇØ ¾²ÀδÙ; Ãâ·ÂÅ¥´Â ÇÁ·Î¼¼½º¿¡ ÀÇÇØ Ãâ·ÂµÇ¾î Á³ Áö¸¸, ¾ÆÁ÷ Å͹̳¯·Î Àü¼ÛµÇÁö ¾ÊÀº ¹®ÀÚµéÀ» ÀúÀåÇϰí ÀÖ´Ù. ¸¸ÀÏ IXON ÀÔ·Â ¸ðµå ºñÆ®( 12.4.4Àý [Input Modes], 189ÆäÀÌÁö ÂüÁ¶)°¡ ¼³Á¤µÇ¾î¼ Ãâ·Â È帧 Á¦¾î°¡ °¡´ÉÇÏ´Ù¸é, Å͹̳¯ µå¶óÀ̹ö´Â ¸Ø ÃãÀ» Áö½ÃÇϱâ À§ÇØ Å͹̳¯¿¡¼ º¸³½ STOP ¹®ÀÚµé°ú Ãâ·ÂÀÇ ÀçÀü¼Û¿¡ µû¸¥´Ù.
Å͹̳¯ÀÇ ÀÔ·ÂÅ¥ÀÇ ¼Ò°Å(Clearing)¶õ ¹Þ¾ÆµéÀ̱â´Â ÇßÁö¸¸ ¾ÆÁ÷ ÀÐÇôÁöÁö ¾ÊÀº ¹®ÀÚµéÀ» ¹ö¸®´Â °Í À» ÀǹÌÇÑ´Ù. À¯»çÇϰÔ, Å͹̳¯ Ãâ·ÂÅ¥¸¦ ¼Ò°ÅÇϱâ¶õ Ãâ·ÂµÆÁö¸¸, ¾ÆÁ÷ Àü¼ÛµÇÁö ¾ÊÀº ¹®ÀÚµéÀ» ¹ö ¸®´Â °ÍÀ» ÀǹÌÇÑ´Ù.
12.3 ÀÔ·ÂÀÇ µÎ°¡Áö ½ºÅ¸ÀÏ: Canonical ¶Ç´Â Not
POSIX ½Ã½ºÅÛÀº ÀÔ·ÂÀÇ µÎ°¡Áö ±âº» ¸ðµå¸¦ Á¦°øÇÑ´Ù: Á¤±Ô ¿Í ºñÁ¤±Ô(canonical and noncanonical).
Á¤±Ô(canonical) ÀÔ·Â ÇÁ·Î¼¼½Ì ¸ðµå¿¡¼, Å͹̳¯ ÀÔ·ÂÀº »õÁÙ¹®ÀÚ('\n'), EOF, ¶Ç´Â EOL ¹®ÀÚµé·Î Á¾·áµÇ´Â ÇÑ ¶óÀÎÀ¸·Î 󸮵ȴÙ. ¾î¶² ÀԷµµ »ç¿ëÀÚ¿¡ ÀÇÇØ ÇÑ ¶óÀÎ ÀüüÀÇ ÀÔ·ÂÀÌ Á¾·áµÇ±â Àü¿¡ ÀÐÇôÁú ¼ö ¾ø°í, read ÇÔ¼ö´Â( 8.2Àý [I/O Primitives], 105 ÆäÀÌÁö ÂüÁ¶), ¾ó¸¶³ª ¸¹Àº ¹ÙÀÌÆ®°¡ ¿äû µÇ¾ú´ÂÁö¿¡ »ó°ü¾øÀÌ, ¸¹¾Æ¾ß ¿ÀÁ÷ ÇÑÁÙÀÇ ÀÔ·ÂÀ» ¸®ÅÏÇÒ »ÓÀÌ´Ù.
Á¤±ÔÀÔ·Â ¸ðµå¿¡¼, ¿î¿µÃ¼Á¦´Â ÀÔ·Â ÆíÁý µµ±¸¸¦ Á¦°øÇÑ´Ù: ERASE ¿Í KILL ¹®ÀÚµéÀº ÅØ½ºÆ®ÀÇ ÇöÀçÀÇ ÁÙ¿¡¼ ÆíÁý ¸í·ÉÀ» ¼öÇàÇϱâ À§ÇØ Æ¯º°ÇÏ°Ô ÇØ¼®µÇ¾îÁø´Ù.
»ó¼ö _POSIX_MAX_CANON °ú MAX_CANON´Â Á¤±Ô ÀÔ·ÂÀÇ ÇÑÁÙ¿¡ ³ªÅ¸³¾ ¼ö ÀÖ ´Â ÃÖ´ë ¹ÙÀÌÆ®¼ö¸¦ ÇÑÁ¤ÇÑ´Ù. 27.6Àý [Limits for Files] 374 ÆäÀÌÁö ÂüÁ¶.
ºñÁ¤±ÔÀÔ·Â( noncanonical input ) ÇÁ·Î¼¼½Ì ¸ðµå¿¡¼, ¹®ÀÚµéÀº ¶óÀεé·Î ¹¿©ÁöÁö ¾Ê°í, ERASE ¿Í KILL ÇÁ·Î¼¼½ÌÀº ¼öÇàµÇÁö ¾Ê´Â´Ù. ºñÁ¤±ÔÀԷ¿¡¼ ÀÐÇôÁø ¹ÙÀÌÆ®µéÀº MIN °ú TIMEÀ» ¼³Á¤ÇÔ À¸·Î ÀÎÇØ¼ Á¦¾îµÈ´Ù. 12.4.10Àý [Noncanonical Input], 198 ÆäÀÌÁö ÂüÁ¶.
´ëºÎºÐÀÇ ÇÁ·Î±×·¥µéÀÌ Á¤±ÔÀÔ·ÂÀ» »ç¿ëÇÏ´Â °ÍÀº, Á¤±ÔÀÔ·ÂÀÇ ¹æ¹ýÀÌ »ç¿ëÀÚ¿¡°Ô ¶óÀÎÀ¸·Î ÀÔ·ÂÀ» ÆíÁýÇÒ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇϱ⠶§¹®ÀÌ´Ù. ºñÁ¤±ÔÀÔ·ÂÀ» »ç¿ëÇÏ´Â º¸ÅëÀÇ ÀÌÀ¯´Â ÇÁ·Î±×·¥ÀÌ ´ÜÀÏ- ¹®ÀÚ ¸í·ÉµéÀ» ¹Þ¾ÆµéÀ̰ųª ¶Ç´Â ÇÁ·Î±×·¥ ÀÚü°¡ ÆíÁýµµ±¸¸¦ Á¦°øÇÒ ¶§ »ç¿ëµÈ´Ù.
Á¤±Ô ȤÀº ºñÁ¤±ÔÀÇ ¼±ÅÃÀº ±¸Á¶Ã¼ struct termiosÀÇ ¸â¹öÀÎ c_lflag¿¡ ICANON Ç÷α׿¡ ÀÇÇØ Á¦ ¾îµÈ´Ù. 12.4.7Àý [Local Modes], 192 ÆäÀÌÁö ÂüÁ¶.
12.4 Å͹̳Π¸ðµå
ÀÌ ÀýÀº ¾î¶»°Ô ÀԷ°ú Ãâ·ÂÀÌ ¼öÇàµÇ¾îÁö´ÂÁö¸¦ Á¦¾îÇÏ´Â ´Ù¾çÇÑ Å͹̳Π¼Ó¼ºµéÀº ¼³¸íÇϰí ÀÖ ´Ù. À̰÷¿¡¼ ¼³¸íÇÑ ÇÔ¼ö, ÀڷᱸÁ¶, ±×¸®°í ±âÈ£ »ó¼öµéÀº ¸ðµÎ Çì´õÆÄÀÏ 'termios.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
12.4.1 Å͹̳¯ ¸ðµå µ¥ÀÌÅÍ Å¸ÀÔµé.
Å͹̳¯ ¼Ó¼ºÀÇ ÀüºÎ´Â ±¸Á¶Ã¼ struct termios ¿¡ ÀúÀåµÇ¾î ÀÖ´Ù. ÀÌ ±¸Á¶Ã¼´Â ¼Ó¼ºµéÀ» Àаí, ¼³Á¤ Çϱâ À§ÇÑ ÇÔ¼ö tcgetattr °ú tcsetattr¿¡¼ »ç¿ëµÈ´Ù.
µ¥ÀÌÅÍ Å¸ÀÔ : struct termios
Å͹̳¯ÀÇ ¸ðµç ÀÔÃâ·Â ¼Ó¼ºÀ» ±â·ÏÇÏ´Â ±¸Á¶Ã¼. ÀÌ ±¸Á¶Ã¼´Â Àû¾îµµ ´ÙÀ½°ú °°Àº ¸â¹öµéÀ» Æ÷ÇÔÇÏ °í ÀÖ´Ù.
tcflag_t c_iflag
ÀÔ·Â ¸ðµå¸¦ À§ÇÑ Ç÷¡±×µéÀ» Á¤ÇÏ´Â ºñÆ® ¸¶½ºÅ©; 12.4.4Àý [Input Modes] 189 ÆäÀÌÁö ÂüÁ¶.
tcflag_t c_oflag
Ãâ·Â¸ðµå¸¦ À§ÇØ Ç÷¡±×µéÀ» Á¤ÇÏ´Â ºñÆ®¸¶½ºÅ©;12.4.5Àý [Output Modes] 190 ÆäÀÌÁö ÂüÁ¶.
tcflag_t c_cflag
Á¦¾î¸ðµå¸¦ À§ÇØ Ç÷¡±×µéÀ» Á¤ÇÏ´Â ºñÆ®¸¶½ºÅ©;12.4.6Àý [Control Modes], 191 ÆäÀÌÁö ÂüÁ¶.
tcflag_t c_lflag
·ÎÄøðµå¸¦ À§ÇØ Ç÷¡±×µéÀº Á¤ÇÏ´Â ºñÆ®¸¶½ºÅ©;12.4.7Àý [Local Modes] 192 ÆäÀÌÁö ÂüÁ¶.
cc_t c_cc[NCCS]
´Ù¾çÇÑ Á¦¾î ÇÔ¼öµé°ú ¿¬°üµÈ ¹®ÀÚµéÀ» Á¤ÇÏ´Â ¹è¿; 12.4.9Àý [Special Characters] 195 ÆäÀÌÁö Âü Á¶.
±¸Á¶Ã¼ struct termios ´Â ¶ÇÇÑ ÀԷ°ú Ãâ·Â Àü¼Û ¼Óµµ¸¦ ºÎÈ£È(encode)ÇÑ ¸â¹öµéÀ» °®°í ÀÖÁö¸¸, ¾ÆÁ÷ ¼³¸íÇÏÁö ¾Ê¾Ò´Ù. 12.4.8Àý [Line Speed]193 ÆäÀÌÁö¸¦ ÂüÁ¶·ÎÇØ¼ ¾î¶»°Ô ¼Óµµ°ªÀ» ½ÃÇèÇϰí ÀúÀåÇÏ´ÂÁö¸¦ »ìÆìº¸¶ó.
´ÙÀ½Àý¿¡¼ ±¸Á¶Ã¼ struct termios ÀÇ ¸â¹öµé¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀ» ÇÒ °ÍÀÌ´Ù.
µ¥ÀÌÅÍ Å¸ÀÔ : tcflag__t
unsigned integer ÇüÀ¸·Î, Å͹̳¯ Ç÷¡±×µéÀ» À§ÇÑ ´Ù¾çÇÑ ºñÆ® ¸¶½ºÅ©¸¦ ³ªÅ¸³»´Âµ¥ »ç¿ëÇÑ´Ù.
µ¥ÀÌÅÍ Å¸ÀÔ : cc__t
unsigned integer ÇüÀ¸·Î ´Ù¾çÇÑ Å͹̳¯ Á¦¾î ÇÔ¼öµé°ú ¿¬°üµÈ ¹®ÀÚµéÀ» ³ªÅ¸³»±â À§ÇØ »ç¿ëÇÑ´Ù.
¸ÅÅ©·Î : int NCCS
ÀÌ ¸ÅÅ©·ÎÀÇ °ªÀº c_cc ¹è¿¿¡ ÀÖ´Â ¿ä¼ÒµéÀÇ °³¼öÀÌ´Ù.
12.4.2 Å͹̳¯ ¸ðµå ÇÔ¼öµé.
ÇÔ¼ö : int tcgetattr(int filedes, struct termios *termios_p)
ÀÌ ÇÔ¼ö´Â ÆÄÀϱâ¼úÀÚ filedes¿Í ¿¬°üµÈ Å͹̳¯ µð¹ÙÀ̽ºÀÇ ¼Ó¼ºÀ» ½ÃÇèÇϴµ¥ »ç¿ëµÈ´Ù. ±× ¼Ó¼º Àº ±¸Á¶Ã¼ termios_p°¡ °¡¸®Å°´Â °÷À¸·Î ¸®ÅϵȴÙ.
¸¸ÀÏ ¼º°øÇϸé, tcgetattr Àº 0À» ¸®ÅÏÇϰí, ½ÇÆÐÇϸé -1À» ¸®ÅÏÇÑ´Ù.
´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯»óȲÀÌ´Ù.
EBADF
filedes Àμö°¡ À¯¿ëÇÑ ÆÄÀϱâ¼úÀÚ°¡ ¾Æ´Ï´Ù.
ENOTTY
filedes °¡ Å͹̳¯°ú ¿¬°üÀÌ ¾ø´Ù.
ÇÔ¼ö : int tcsetattr(int filedes, int when, const struct termios *termios_p)
ÀÌ ÇÔ¼ö´Â ÆÄÀϱâ¼úÀÚ filedes¿Í ¿¬°üµÈ Å͹̳¯ µð¹ÙÀ̽ºÀÇ ¼Ó¼ºÀ» ¼³Á¤ÇÑ´Ù. »õ·Î¿î ¼Ó¼ºµéÀº termios_p°¡ °¡¸®Å°°í ÀÖ´Â ±¸Á¶Ã¼·ÎºÎÅÍ °¡Á®¿Â´Ù.
when Àμö´Â ÀÌ¹Ì Å¥µÈ( Å¥¿¡ ÀúÀåµÇ¾î ÀÖ´Â ) ÀԷ°ú Ãâ·ÂÀ» ¾î¶»°Ô Ãë±ÞÇÒ °ÍÀÎÁö¸¦ Á¤ÇÏ´Â °Í À¸·Î ´ÙÀ½°ªµéÁß Çϳª¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
TCSANOW
Áï½Ã ¼Ó¼ºÀ» º¯°æ½ÃÄѶó.
TCSADRAIN
Å¥¿¡ ÀúÀåµÈ Ãâ·ÂÀÌ ¾²¿©Áú¶§±îÁö ±â´Ù¸°ÈÄ¿¡ ¼Ó¼ºÀ» º¯°æÇ϶ó. ´ç½ÅÀº º¯°æÇÏ´Â ÆÄ¶ó¹ÌÅͰ¡ Ãâ·Â ¿¡ ¿µÇâÀ» ¹ÌÄ¥¶§ ÀÌ ¿É¼ÇÀ» »ç¿ëÇÑ´Ù.
TCSAFLUSH
À̰ÍÀº TCSADRAIN°ú °°Áö¸¸, Å¥¿¡ ÀúÀåµÈ ÀÔ·ÂÀ» ¹ö¸°´Ù.
TCSASOFT
À̰ÍÀº À§¿¡ ÀÖ´Â ¾î¶²°Í°úµµ µ¡ºÙ¿© »ç¿ëÇÒ ¼ö ÀÖ´Â Ç÷¡±× ºñÆ®ÀÌ´Ù. À̰ÍÀº Å͹̳¯ Çϵå¿þ¾î¿¡ ´ëÇÑ »óȲÀÇ º¯°æÀ» ±ÝÁöÇϱâÀ§ÇÑ °ÍÀÌ´Ù. À̰ÍÀº BSD È®ÀåÀÌ´Ù; BSD°¡ ¾Æ´Ñ½Ã½ºÅÛ¿¡¼´Â ¾Æ¹« ·Ã ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù.
¸¸ÀÏ ÀÌ ÇÔ¼ö°¡ Å͹̳¯À» Á¦¾îÇϰí ÀÖ´Â ¹è°æ ÇÁ·Î¼¼½º·ÎºÎÅÍ È£ÃâµÈ´Ù¸é, º¸Åë ÇÁ·Î¼¼½º ±×·ì¾È ¿¡ ÀÖ´Â ¸ðµç ÇÁ·Î¼¼½ºµéÀº Å͹̳¯¿¡ ¾²±â¸¦ ½ÃµµÇÏ´Â ÇÁ·Î¼¼½º°¡ ÀÖÀ»¶§¿Í °°Àº ¹æ¹ýÀ¸·Î, SIGTTOU ½Ã±×³¯À» º¸³½´Ù. ¸¸ÀÏ ÇÔ¼ö¸¦ È£ÃâÇÑ ÇÁ·Î¼¼½º ÀÚ½ÅÀÌ SIGTTOU ½ÅÈ£¸¦ ¹«½ÃÇϰųª ºí·ÏÇϰí ÀÖ´Ù¸é ÀÌ ¸í·ÉÀº ¼öÇàµÇ¾î Áö°í, ¾Æ¹«·± ½ÅÈ£µµ º¸³»Áö ¾Ê´Â´Ù. 24Àå [Job control] 335 Æä ÀÌÁö ÂüÁ¶.
¸¸ÀÏ ¼º°øÇϸé, tcsetattr Àº 0À» ¸®ÅÏÇϰí, ½ÇÆÐÇϸé -1À» ¸®ÅÏÇÑ´Ù.
´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
EBADF
filedes Àμö´Â À¯¿ëÇÑ ÆÄÀϱâ¼úÀÚ°¡ ¾Æ´Ï´Ù.
ENOTTY
filedes´Â Å͹̳¯°ú ¾Æ¹«·± ¿¬°üÀÌ ¾ø´Ù.
EINVAL
when Àμö°ªÀÌ À¯¿ëÇÏÁö ¾Ê°Å³ª, termios_p Àμö¿¡ À߸øµÈ µ¥ÀÌÅͰ¡ À߸øµÇ¾ú°Å³ª.
tcgetattr °ú tcsetattr ÀÌ filedes¸¦ Å͹̳¯°ú ¿¬°üµÈ ÆÄÀϱâ¼úÀÚ·Î Á¤Çß´Ù°í ÇÒÁö¶óµµ, ±× ¼Ó¼ºÀº ÆÄ Àϱâ¼úÀÚÀÇ °ÍÀÌ ¾Æ´Ï¶ó Å͹̳¯ µð¹ÙÀ̽º ±× ÀÚüÀÇ ¼Ó¼ºÀÌ´Ù. À̰ÍÀº º¯°æÇÑ Å͹̳¯ µð¹ÙÀ̽ºÀÇ ¼Ó¼ºµéÀÌ ºÒº¯ÇÔÀ» ÀǹÌÇÑ´Ù; ¸¸ÀÏ ³ªÁß¿¡ ´Ù¸¥ ÇÁ·Î¼¼½º°¡ Å͹̳¯ ÆÄÀÏÀ» °³¹æÇϸé, ±×°ÍÀº ½ÉÁö ¾î °³¹æÇÑ ÆÄÀÏ ±â¼úÀÚ·Î ¾Æ¹«Àϵµ ÇÏÁö ¸øÇÒÁö¶óµµ º¯°ßµÈ ¼Ó¼ºµéÀ» º¸ÀÏ °ÍÀÌ´Ù.
À¯»çÇϰÔ, ¸¸ÀÏ ´ÜÀÏ ÇÁ·Î¼¼½º°¡ µ¿ÀÏÇÑ Å͹̳¯ µð¹ÙÀ̽º¿¡ ´ÙÁß ¶Ç´Â º¹Á¦µÈ ÆÄÀϱâ¼úÀÚµéÀ» °¡Á³ ´Ù¸é, Å͹̳¯ ¼Ó¼º º¯°æÀº ÀÌ ÆÄÀϱâ¼úÀÚ ¸ðµÎÀÇ ÀԷ°ú Ãâ·Â¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù. ÀÌ Àǹ̴Â, ¿¹¸¦ µé ¾î, ´ç½ÅÀº ÇÑ °³ÀÇ ÆÄÀÏ ±â¼úÀÚ¸¸À» °³¹æÇÒ ¼ö ¾ø°Å³ª, ¶Ç´Â ¹ÝÇâ ¸ðµå(echoed mode)·Î º¸ÅëÀÇ ¶ó ÀÎ ¹öÆÛÀÇ ÀÔ·ÂÀ» Å͹̳¯·ÎºÎÅÍ ÀбâÀ§ÇÑ ½ºÆ®¸²À» °³¹æÇÒ ¼ö ¾ø´Ù; ±×¸®°í µ¿½Ã¿¡ ´ç½ÅÀº ºñ¹ÝÇâ ¸ðµå·Î µ¿ÀÏÇÑ Å͹̳¯·ÎºÎÅÍ ´ÜÀÏ ¹®ÀÚ¸¦ ÀбâÀ§ÇØ »ç¿ëµÇ´Â ´Ù¸¥ ÆÄÀϱâ¼úÀÚ¸¦ °¡Áø´Ù. ´ë½Å¿¡ ´ç ½ÅÀº, µÎ °³ÀÇ ¸ðµå »çÀÌ¿¡ ¾î¶² °ÍÀÌ Àü¸éÀ̰í, ¾î¶² °ÍÀÌ ÈĸéÀÎÁö Á¤È®ÀÌ ÇØ¾ßÇÑ´Ù.
12.4.3 Àû´çÇÏ°Ô Å͹̳¯ ¸ðµå ¼³Á¤Çϱâ.
´ç½ÅÀÌ Å͹̳¯ ¸ðµå¸¦ ¼³Á¤ÇÒ ¶§, ´ç½ÅÀº ù°·Î Ưº°ÇÑ Å͹̳¯ µð¹ÙÀ̽ºÀÇ ÇöÀçÀÇ ¸ðµå¸¦ ¾ò±âÀ§ ÇØ tcgetattrÀ» È£ÃâÇϰí, ±×´ÙÀ½ ½ÇÁ¦·Î ´ç½ÅÀÌ °ü½ÉÀ» °¡Áø ¸ðµåµéÀ» °»½ÅÇϰí, tcseattr¿¡ ±× °á°ú ¸¦ ÀúÀåÇÑ´Ù.
¼Ó¼ºµéÀÇ ¼³Á¤À» ¼±ÅÃÇϱâ À§ÇØ ±¸Á¶Ã¼ struct termios¸¦ °£´ÜÈ÷ ÃʱâÈÇϰí Á÷Á¢ÀûÀ¸·Î tcsetatt¿¡ Àμö·Î ÁÖ´Â °ÍÀº ³ª»Û¹æ¹ýÀÌ´Ù. ´ç½ÅÀÇ ÇÁ·Î±×·¥Àº ÀÌ ¸Å´º¾ó¿¡ ¹®¼ÈµÇÁö ¾ÊÀº ¸â¹öµéÀ» Áö¿øÇÏ ´Â ½Ã½ºÅÛ¿¡¼ Áö±ÝÀ¸·ÎºÎÅÍ ¼ö³âÈÄ¿¡ ½ÇÇàµÇ¾îÁúÁöµµ ¸ð¸¥´Ù. ÀÌÇØÇÒ¼ö ¾ø´Â °ªµé·Î ÀÌµé ¸â¹öµé Àº ¼³Á¤ÇÏ´Â °ÍÀ» ÇÇÇϱâ À§ÇÑ ¹æ¹ýÀº ±×µéÀ» º¯°æÇÏ´Â °ÍÀ» ÇÇÇÏ´Â °ÍÀÌ´Ù. Áï, ´Ù¸¥ Å͹̳¯ µð¹ÙÀÌ ½º´Â Àû´çÇÏ°Ô ¼³Á¤µÈ ´Ù¸¥ ¸ðµå¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ±×·¡¼ ´ç½ÅÀº ÇϳªÀÇ Å͹̳¯ µð¹ÙÀ̽º·ÎºÎÅÍ ´Ù¸¥ Å͹̳¯ µð¹ÙÀ̽º·Î ±×³É ¼Ó¼ºµéÀ» Ä«ÇÇÇÏ´Â °ÍÀº ÇÇÇØ¾ßÇÑ´Ù.
ÇÑ ¸â¹ö°¡ c_iflag, c_oflag ±×¸®°í c_cflag µîÀÇ µ¶¸³Àû Ç÷¡±×µéÀÇ ÁýÇÕÀÏ ¶§, ±×µé Àüü ¸â¹öµéÀ» ¼³Á¤ÇÏ·ÁÇÏ´Â °ÍÀº À߸øµÈ »ý°¢ÀÌ´Ù, ¿Ö³ÄÇϸé, Ưº°ÇÑ ¿î¿µÃ¼Á¦´Â ±×µé ÀڽŸ¸ÀÇ Ç÷¡±×µéÀ» °®°í Àֱ⠶§¹®ÀÌ´Ù. ´ë½Å¿¡, ´ç½ÅÀº ¸â¹öÀÇ ÇöÀçÀÇ °ªµéÀ» ¾ò¾î¼, ´ç½ÅÀÇ ÇÁ·Î±×·¥¿¡¼ ´Ù·ê¼ö ÀÖ´Â Çà ·¡±×¸¸ º¯°æÇϰí, ´Ù¸¥ Ç÷¡±×µéÀ» º¯°æÇÏÁö ¾Êµµ·Ï ÇØ¶ó. À̰÷¿¡ ±¸Á¶Ã¼ struct termiosÀÇ ´Ù¸¥ µ¥ ÀÌÅ͸¦ ±×´ë·Î À¯ÁöÇϰí, ¿ÀÁ÷ ÇÑ Ç÷¡±×(ISTRIP)¸¸À» ¾î¶»°Ô º¯°æÇÏ´ÂÁö¿¡ ´ëÇÑ ¿¹°¡ ÀÖ´Ù.
int
set_istrip (int desc, int value)
{
struct termios settings;
int result;
result = tcgetattr (desc, &settings);
if (result < 0)
{
perror ("error in tcgetattr");
return 0;
}
settings.c_iflag &= ~ISTRIP;
if (value)
settings.c_iflag |= ISTRIP;
result = tcgetattr (desc, &settings);
if (result < 0)
{
perror ("error in tcgetattr");
return;
}
return 1;
}
12.4.4 ÀÔ·Â ¸ðµåµé.
ÀÌ ÀýÀº ÀÔ·Â ÇÁ·Î¼¼½ÌÀÇ Àú¼öÁØ °üÁ¡À» ¿ÏÀüÈ÷ Á¦¾îÇÏ´Â Å͹̳¯ ¼Ó¼º Ç÷¡±×µéÀº ¼³¸íÇϰí ÀÖ´Ù: ¿¡·¯ Çڵ鸵, ¸ØÃã ½ÅÈ£µé, Á¦¾î È帧, ±×¸®°í RET ¿Í LFD ¹®ÀÚµé.
À̵é Ç÷¡±× ¸ðµå´Â ±¸Á¶Ã¼ struct termios ÀÇ c_iflag¾ÈÀÇ ºñÆ®µéÀÌ´Ù.
±× ¸â¹ö´Â Á¤¼öÀ̰í, ´ç½ÅÀº ¿ÀÆÛ·¹ÀÌÅÍ &, | ±×¸®°í ^ ¸¦ »ç¿ëÇØ¼ Ç÷¡±×µéÀº º¯°æÇÒ ¼ö ÀÖ´Ù. c_iflag_instead¸¦ À§ÇÑ Àüü°ªÀ» Á¤ÇÏ¿© ½ÃµµÇÏÁö ¸»°í, ³ª¸ÓÁö´Â ¼Õ´ëÁö ¸»°í ³²°ÜµÖ¶ó.( 12.4.3Àý [Setting Modes] 188 ÆäÀÌÁö ÂüÁ¶.)
INPCK
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ÀÔ·Â ÆÐ¸®Æ¼ üũ°¡ °¡´ÉÇÏ´Ù. ¸¸ÀÏ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, ÀԷ¿¡¼ ÆÐ¸®Æ¼ ¿¡·¯°¡ ³µ´ÂÁö üũÇÏÁö ¾Ê´Â´Ù; Áï ±×¹®ÀÚµéÀº ±× ¾îÇø®ÄÉÀ̼ǿ¡ °£´ÜÈ÷ ÁÖ¾îÁø´Ù. ÀÔ·Â ÇÁ·Î¼¼ ½Ì¿¡¼ ÆÐ¸®Æ¼ üũ´Â ÆÐ¸®Æ¼ °ËÃâÀÇ ¿©ºÎ¿¡ µ¶¸³ÇÏ¿© ÀÖ°í, Å͹̳¯ Çϵå¿þ¾î¿¡¼ÀÇ ÆÐ¸®Æ¼ ¹ß»ýÀº °¡´ÉÇÏ´Ù; 12.4.6Àý [Control Modes] 191 ÆäÀÌÁö ÂüÁ¶. ¿¹¸¦ µé¾î, ´ç½ÅÀº INPCK ÀÔ·Â ¸ðµå Ç÷¡±× ¸¦ ¼Ò°ÅÇϰí ÀԷ¿¡¼ ÆÐ¸®Æ¼ ¿¡·¯µéÀº ¹ö¸®±âÀ§ÇØ PARENB Á¦¾î ¸ðµå Ç÷¡±×¸¦ ¼³Á¤ÇÒ ¼ö ÀÖÁö ¸¸, ¿©ÀüÈ÷ Ãâ·Â¿¡¼ ÆÐ¸®Æ¼ ¿¡·¯´Â ¹ß»ýÇÑ´Ù.
¸¸ÀÏ À̺ñÆ®°¡ ¼³Á¤µÇ¸é, ÆÐ¸®Æ¼ ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ IGNPAR À̳ª PARMRK ºñÆ®°¡ ¼³Á¤µÇ¾ú´Â Áö¿¡ ÀÇÁ¸ÇÏ¿© ¹«½¼ÀÏÀÌ ¹ß»ýÇÑ´Ù. À̺ñÆ®¸¦ ¼³Á¤ÇÏÁö ¾Ê´Â´Ù¸é, ÆÐ¸®Æ¼ ¿¡·¯¸¦ À§ÇÑ ÇÑ ¹ÙÀÌÆ®¸¦ '\0'·Î ÀÀ¿ëÇÁ·Î±×·¥¿¡ ÁÖ¾î¾ß ÇÑ´Ù.
IGNPAR
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ±¸¼º(framing) À̳ª ÆÐ¸®Æ¼ ¿¡·¯¸¦ À§ÇÑ ¹ÙÀÌÆ®°¡ ¹«½ÃµÇ¾îÁø´Ù. À̰ÍÀº INPCK °¡ ¼³Á¤µÇ¾î¾ßÁö¸¸ À¯¿ëÇÏ´Ù.
PARMRK
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ÆÐ¸®Æ¼³ª ±¸¼º ¿¡·¯°¡ ÀÖ´Â ÀÔ·Â ¹ÙÀÌÆ®µéÀÌ ÇÁ·Î±×·¥¿¡ Ç¥½ÃµÈ´Ù. ÀÌ ºñÆ®´Â INPCK °¡ ¼³Á¤µÇ°í IGNPARÀÌ ¼³Á¤µÇÁö ¾Ê¾ÒÀ» ¶§ À¯È¿ÇÏ´Ù. À߸øµÈ ¹ÙÀÌÆ®¸¦ Ç¥½ÃÇÏ´Â ¹æ¹ýÀº µÎ °³ÀÇ ¼±Çà ¹ÙÀÌÆ®, 377°ú 0À» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ±×·¡¼, ÇÁ·Î±×·¥Àº Å͹̳¯·Î ºÎÅÍ ¹ÞÀº À߸øµÈ ÇÑ °³ÀÇ ¹ÙÀÌÆ®·ÎºÎÅÍ ¼¼ °³ÀÇ ¹ÙÀÌÆ®µéÀ» ÀаԵǴ °ÍÀÌ´Ù. ¸¸ÀÏ À¯¿ëÇÑ ¹ÙÀÌÆ®°¡ 0377ÀÇ °ªÀ» °¡Áö°í, ISTRIP( ¹ØÀ» º¸¶ó.) ÀÌ ¼³Á¤µÇÁö ¾Ê´Â´Ù¸é, ±× ÇÁ·Î±×·¥Àº ±×°ÍÀ» ÆÐ¸®Æ¼ ¿¡·¯ Ç¥½Ã¿Í È¥µ¿ÇÒ °ÍÀÌ´Ù. ±×·¡¼ À¯¿ëÇÑ ¹ÙÀÌÆ® 0377Àº µÎ °³ÀÇ ¹ÙÀÌÆ®·Î ÇÁ·Î±×·¥¿¡ ÁÖ¾îÁø´Ù, Áï À̰æ¿ì¿¡ ´Â 0377 0377·Î...
ISTRIP
¸¸ÀÏ À̺ñÆ®°¡ ¼³Á¤µÇ¸é, À¯¿ëÇÑ ÀÔ·Â ¹ÙÀÌÆ®µéÀÌ Àϰö ºñÆ®·Î ±¸¼ºµÇ¾î ÀÖ´Ù; ±×·¸Áö ¾Ê´Ù¸é, ¿©´ü ºñÆ® ¸ðµÎ°¡ ÀÐÇô¼ ÇÁ·Î±×·¥¿¡¼ »ç¿ëµÈ´Ù.
IGNBRK
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ¸ØÃã(break)ÀÇ »óȲÀÌ ¹«½ÃµÈ´Ù.
¸ØÃã(break) »óȲÀº ÇÑ ¹ÙÀÌÆ®º¸´Ù ±ä 0-°ªÀ» °¡Áø ºñÆ®µéÀÇ ¿µéÀ» ºñµ¿±âÀû Á÷·Ä µ¥ÀÌÅÍ Àü¼ÛÀÇ ¹æ¹ýÀ¸·Î Á¤ÀǵȴÙ.
BRKINT
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ°í, IGNBRK °¡ ¼³Á¤µÇÁö ¾Ê´Â´Ù¸é, ¸ØÃã(break)ÀÇ »óȲÀº Å͹̳¯ ÀԷ°ú Ãâ ·ÂÀÇ Å¥¸¦ ¼Ò°ÅÇϰí, Å͹̳¯°ú ¿¬°üÀÖ´Â Àü¸é ÇÁ·Î¼¼½º ±×·ìÀ» À§Çؼ SIGINT ½ÅÈ£¸¦ ¹ß»ýÇÑ´Ù. ¸¸ÀÏ BRKINT ³ª IGNBRK °¡ ¼³Á¤µÇÁö ¾Ê¾Ò´Ù¸é, ¸ØÃã(break) »óȲÀº ¸¸ÀÏ PARMRK°¡ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, ´ÜÀÏ ¹®ÀÚ '\0'·Î ÀÀ¿ëÇÁ·Î±×·¥¿¡ ÁÖ¾îÁø´Ù, ±×·¸Áö¾ÊÀ¸¸é,
¼¼ °³ÀÇ ¹®ÀÚ¿ '\377', '\0', '\0'·Î ÁÖ¾îÁø´Ù.
IGNCR
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ij¸®Áö¸®ÅÏ ¹®ÀÚ('\r')´Â ÀԷ¿¡¼ ¹ö·ÁÁø´Ù. ¹ö·ÁÁø ij¸®Áö¸®ÅÏÀº ´ç½Å ÀÌ RET ۸¦ Ä¥ ¶§ ij¸®Áö¸®Åϰú ¶óÀÎÇǵå(linefeed) À̵ÑÀ» º¸³½ Å͹̳ο¡¼ À¯¿ëÇÏ°Ô µÉ °ÍÀÌ´Ù.
ICRNL
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ°í IGNCR ÀÌ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, ÀÔ·ÂÀ¸·Î ¹ÞÀº ij¸®Áö¸®ÅϹ®ÀÚ¸¦('\r') »õÁÙ ¹®ÀÚ('\n')·ÎÇØ¼ ÀÀ¿ëÇÁ·Î±×·¥¿¡ ÁÖ¾îÁø´Ù.
INLCR
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ÀÔ·ÂÀ¸·Î ¹ÞÀº »õÁÙ¹®ÀÚ('\n')´Â ij¸®Áö¸®ÅϹ®ÀÚ('\r')·Î ÀÀ¿ëÇÁ·Î±×·¥¿¡ ÁÖ¾îÁø´Ù.
IXOFF
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ÀÔ·ÂÀÇ Á¤Áö/½ÃÀÛÀÇ Á¦¾î°¡ °¡´ÉÇÏ´Ù. Áï, ÄÄÇ»ÅͰ¡, ÇÁ·Î±×·¥ÀÌ Ã³¸®ÇÏ ´Â ¼Óµµº¸´Ù ´õ ºü¸£°Ô µ¥ÀÌÅͰ¡ µµÂøÇÏ´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ STOP°ú START ¹®ÀÚµéÀ» º¸³½´Â °ÍÀÌ´Ù. ÀÔ·Â µ¥ÀÌÅ͸¦ »ý¼ºÇÏ´Â ½ÇÁ¦ Å͹̳¯ Çϵå¿þ¾î¿¡¼ STOP ¹®ÀÚ¿¡ ÀÀ´äÇÏ¿© Àü¼ÛÀ» Áß´ÜÇÏ °í, START ¹®ÀÚ¿¡ ÀÀ´äÇÏ¿© ´Ù½Ã Àü¼ÛÀ» Àç°³ÇÑ´Ù. 12.4.9.4Àý [Strat/Stop Characters], 197 ÆäÀÌÁö ÂüÁ¶.
IXON
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, Ãâ·ÂÀÇ ½ÃÀÛ/Á¤ÁöÀÇ Á¦¾î°¡ °¡´ÉÇÏ´Ù. Áï, ¸¸ÀÏ ÄÄÇ»ÅͰ¡ STOP ¹®ÀÚ¸¦ ¹ÞÀ¸¸é, START ¹®ÀÚ¸¦ ¹ÞÀ»¶§±îÁö Ãâ·ÂÀ» Áß´ÜÇÑ´Ù. ÀÌ °æ¿ì, STOP °ú START ¹®ÀÚµéÀº °áÄÚ ÀÀ¿ëÇÁ·Î±×·¥¿¡ ÁÖ¾îÁö´Â °ÍÀÌ ¾Æ´Ñ´Ù. ¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇÁö ¾Ê´Â´Ù¸é±×·¯¸é START¿Í STOP ´Â ¿ø·¡ÀÇ ¹®ÀÚµé·Î ÀÐÇôÁø´Ù. 12.4.9.4Àý [Start/Stop Characters], 197 ÆäÀÌÁö ÂüÁ¶.
IXANY
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, Ãâ·ÂÀÌ STOP¸¦ ÅëÇØ Á¤Áö µÇ¾îÁ® ÀÖÀ» ¶§, ¾î´À¹®ÀÚ¸¦ °¡Áö°íµµ Ãâ·Â À» Àç°³ÇÒ¼ö ÀÖ´Ù. Áï, ¿ÀÁ÷ START ¹®ÀÚ¸¸ Ãâ·ÂÀ» Àç°³ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó´Â °ÍÀÌ´Ù.
IMAXBEL
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, º§ÀÌ ¿ï¸®µµ·Ï Å͹̳¯¿¡ BEL¹®ÀÚ(
code 007)¸¦ º¸³»¾î Å͹̳¯ÀÇ ÀÔ·Â ¹öÆÛ¸¦ °¡µæ ä¿î´Ù.
12.4.5 Ãâ·Â ¸ðµåµé.
ÀÌ ÀýÀº Ãâ·Â ¹®ÀÚµéÀ» ¾î¶»°Ô ÇØ¼®Çϰí ȸéÀ» ä¿ï°ÍÀÎÁö¸¦ Á¦¾îÇÏ´Â Å͹̳¯ Ç÷¡±×¿Í Çʵåµé¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. ÀÌµé ¸ðµÎ´Â ±¸Á¶Ã¼ struct termiosÀÇ c_oflag ¸â¹ö¿¡ µé¾îÀÖ´Ù.
c_oflag ¸â¹ö ÀÚ½ÅÀº Á¤¼öÇüÀ̰í, ´ç½ÅÀº ±× Ç÷¡±×µé°ú ÇʵåµéÀ» ¿ÀÆÛ·¹ÀÌÅÍ &, |, ±×¸®°í ^¸¦ »ç¿ë ÇØ¼ °»½ÅÇÒ ¼ö ÀÖ´Ù. c_oflagÀÇ ÀüüÀÇ °ªÀ» º¯°æÇÏ·Á ½ÃµµÇÏÁö ¸»°í_´ë½Å¿¡ ¿ÀÁ÷ Á¤ÇØÁø ÇϳªÀÇ Ç÷¡±×¸¸ º¯°æÇÏ°í ³ª¸ÓÁö´Â ¼Õ´ëÁö ¸»°í ³²°ÜµÖ¶ó ( 12.4.3Àý [Setting Modes], 188ÆäÀÌÁö ÂüÁ¶.
¸ÅÅ©·Î : int OPOST
ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, Ãâ·Â µ¥ÀÌÅÍ´Â Å͹̳¯ µð¹ÙÀ̽º¿¡ Àû´çÇÏ°Ô Ç¥½Ã µÇ´Â ±×·± Ưº°È÷ Á¤ÇØÁöÁö ¾ÊÀº ¹æ¹ýÀ¸·Î 󸮵ȴÙ. À̰ÍÀº »õÁÙ¹®ÀÚ ('\n')¸¦ ij¸®Áö¸®Åϰú ¶óÀÎÇǵåÀÇ ½ÖÀ¸·Î ´ëÄ¡½ÃÄÑ Æ÷ÇÔ ÇÑ´Ù. ¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇÁö ¾Ê´Â´Ù¸é, ±× ¹®ÀÚµéÀº ±×´ë·Î Àü¼ÛµÈ´Ù.
´ÙÀ½ ¼¼ °³ÀÇ ºñÆ®µéÀº BSD¸¦ À§ÇÑ °ÍÀ¸·Î, BSD °¡ ¾Æ´Ñ ½Ã½ºÅÛ¿¡´Â ¾Æ¹«·± ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù. ¸ðµç ½Ã½ºÅÛ¿¡¼, ±×µéÀº OPOST°¡ ¼³Á¤ µÇ¾îÀÖ¾î¾ß È¿°ú¸¦ ¹ßÈÖÇÑ´Ù.
¸ÅÅ©·Î : int ONLCR
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, Ãâ·Â¿¡ ³ªÅ¸³ »õÁÙ¹®ÀÚ¸¦ ¹®ÀÚÀÇ ½Ö(pair)ÀΠij¸®Áö¸®Åϰú ¶óÀÎÇǵå·Î º¯È¯ÇÑ´Ù.
¸ÅÅ©·Î : int OXTABS
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, Ãâ·Â¿¡ ³ªÅ¸³ Åǹ®ÀÚµéÀ» 8Ä®·³ÀÇ ÅÇÀ» ±¸ÇöÇÏ´Â Àû´çÇÑ °ø¹éÀ¸·Î º¯È¯ ÇÑ´Ù.
¸ÅÅ©·Î : int ONOEOT
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, Ãâ·Â¿¡ ³ªÅ¸³ª´Â C-d ¹®ÀÚ(code 004)µéÀ» ¹ö¸°´Ù. ÀÌµé ¹®ÀÚµéÀº dial-up Å͹̳¯ÀÇ ¿¬°áÀ» ´ÜÀý½Ã۱⠶§¹®ÀÌ´Ù.
12.4.6 Á¦¾î ¸ðµåµé.
ÀÌ ÀýÀº ºñµ¿±â Á÷·Ä µ¥ÀÌÅÍ Àü¼Û¿¡ °ü°èµÈ Á¦¾î ÆÄ¶ó¹ÌÅÍÀÎ Å͹̳¯ Ç÷¡±×¿Í ÇʵåµéÀ» ¼³¸íÇÑ´Ù. À̵é Ç÷¡±×µéÀº Å͹̳¯ Æ÷Æ®(³×Æ®¿÷¿¡ ¿¬°áµÈ °¡»ó-Å͹̳¯ ó·³)ÀÇ ´Ù¸¥ Á¾·ù¿¡´Â ÅëÇÏÁö ¾ÊÀ»Áöµµ ¸ð¸¥´Ù. ÀÌµé ¸ðµÎ´Â ±¸Á¶Ã¼ struct termiosÀÇ c_cflag ¸â¹ö¿¡ Á¸ÀçÇÑ´Ù.
c_cflag ¸â¹ö ÀÚü´Â Á¤¼öÇüÀ¸·Î, ´ç½ÅÀº ±× Ç÷¡±×¿Í ÇʵåµéÀ» ¿ÀÆÛ·¹ÀÌÅÍ &, |, ±×¸®°í ^ À» »ç¿ë ÇØ¼ °»½ÅÇÒ ¼ö ÀÖ´Ù. c_cflagÀÇ Àüü°ªµéÀ» Á¤ÇÏ·Á ½ÃµµÇÏÁö ¸»°í, ´ë½Å¿¡ ¿ÀÁ÷ Á¤ÇØÁø Ç÷¡±×µé¸¸ º¯°æÇϰí, ³ª¸ÓÁö´Â ¼Õ´ëÁö ¸»°í ³²°ÜµÖ¶ó(12.4.3Àý [Setting Modes] ÆäÀÌÁö 188 ÂüÁ¶.)
CLOCAL
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, Å͹̳¯ÀÌ "±¹ºÎÀûÀ¸·Î" ¿¬°áµÇ¾î ÀÖ°í, ¸ðµ© »óÅ ¶óÀεéÀº( ij¸®¾î °ËÃâ °ú °°Àº)¹«½ÃµÊÀ» ÀǹÌÇÑ´Ù.
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇÁö ¾Ê°í ´ç½ÅÀÌ O_NONOBLOCK Ç÷¡±×¸¦ ¼³Á¤ÇÏÁö ¾Ê°í openÀ» È£ÃâÇϸé, openÀº ¸ðµ©ÀÌ ¿¬°áµÉ¶§±îÁö ºí·ÏµÈ´Ù.
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇÁö ¾Ê°í, ¸ðµ© ¿¬°áÀÌ ²÷¾îÁö¸é, SIGHUP ½ÅÈ£¸¦ Å͹̳¯(¸¸ÀÏ ±×°ÍÀÌ Çϳª¸¦ °¡Áø´Ù¸é)À» À§ÇÑ Á¦¾î ÇÁ·Î¼¼½º ±×·ì¿¡ º¸³½´Ù. º¸Åë, À̰ÍÀº Å»Ãâ(exit) ÇÏ·Á´Â ÇÁ·Î¼¼½º¿¡ ¶§¹®ÀÌ ´Ù; 21Àå [Signal Handling]271 ÆäÀÌÁö ÂüÁ¶. ¿¬°áÀÌ ²÷¾îÁø ÈÄ¿¡ Å͹̳¯·ÎºÎÅÍ Àбâ´Â ÆÄÀϳ¡ »ó ȲÀ» ¹ß»ýÇϰí, ¾²±â´Â ¸®Å쵃 EIO ¿¡·¯¸¦ ¹ß»ýÇÑ´Ù. Å͹̳¯ µð¹ÙÀ̽º´Â ¹Ýµå½Ã ´ÝÇôÁ®¾ß Çϰí, ±× »óȲÀ» ¼Ò°ÅÇϱâ À§ÇØ Àç°³¹æµÇ¿©Á®¾ß ÇÑ´Ù.
HUPCL
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ¸ðµç ÇÁ·Î¼¼½º°¡ Æó¼èµÈ ÆÄÀÏÀÎ Å͹̳¯ µð¹ÙÀ̽º¸¦ °®°Å³ª, ºüÁ®³ª°¥ ¶§ ¸ðµ© ´ÜÀý(disconnect)ÀÌ ¹ß»ýÇÑ´Ù.
CREAD
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ÀÔ·ÂÀÌ Å͹̳¯·ÎºÎÅÍ ÀÐÇôÁú ¼ö ÀÖ´Ù. ±×·¸Áö¾Ê´Ù¸é, ÀÔ·ÂÀº ±×°ÍÀÌ µµ ÂøÇßÀ» ¶§ ¹ö·ÁÁø´Ù.
CSTOPB
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, µÎ °³ÀÇ stop ºñÆ®°¡ »ç¿ëµÈ´Ù. ±×·¸Áö ¾Ê´Ù¸é ¿ÀÁ÷ ÇÑ °³ÀÇ stop ºñÆ®°¡ »ç¿ëµÈ´Ù.
PARENB
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ÆÐ¸®Æ¼ ºñÆ®ÀÇ »ý¼º°ú °ËÃâÀÌ °¡´ÉÇÏ°Ô µÈ´Ù. 12.4.4Àý [Input Modes], 189 ÆäÀÌÁö¸¦ ÂüÁ¶·Î ÀÔ·Â ÆÐ¸®Æ¼ ¿¡·¯°¡ ¾î¶»°Ô ´Ù·ç¾îÁö´ÂÁö¸¦ º¸¾Æ¶ó.
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, Ãâ·Â ¹®Àڵ鿡 ÆÐ¸®Æ¼ ºñÆ®°¡ ´õÇØÁöÁö ¾Ê°í, ÀÔ·Â ¹®Àڵ鿡¼´Â ÆÐ¸®Æ¼¿¡·¯¸¦ üũÇÏÁö ¾Ê´Â´Ù.
PARODD
ÀÌ ºñÆ®´Â PARENB°¡ ¼³Á¤µÆÀ»¶§¸¸ À¯¿ëÇÏ´Ù. ¸¸ÀÏ PARODD°¡ ¼³Á¤µÇ¸é, Ȧ¼ö ÆÐ¸®Æ¼°¡ »ç¿ëµÇ °í, ±×·¸Áö ¾ÊÀ¸¸é ¦¼ö ÆÐ¸®Æ¼°¡ »ç¿ëµÈ´Ù.
Á¦¾î ¸ðµå Ç÷¡±×µéÀº ¹®ÀÚ´ç ºñÆ®µéÀÇ °³¼ö¸¦ ³ªÅ¸³»´Â Çʵ带 °®°í ÀÖ´Ù. ´ç½ÅÀº ±× °ªÀ» ÃßÃâ Çϱâ À§Çؼ CSIZE ¸ÅÅ©·Î¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌó·³ : settings.c_cflag & CSIZE
CSIZE
À̰ÍÀº ¹®ÀÚ´ç ºñÆ®µéÀÇ °³¼ö¸¦ À§ÇÑ ¸¶½ºÅ©ÀÌ´Ù.
CS5
¹ÙÀÌÆ®´ç ´Ù¼¸ºñÆ®¸¦ Á¤ÇÑ´Ù.
CS6
¹ÙÀÌÆ®´ç ¿©¼¸ºñÆ®¸¦ Á¤ÇÑ´Ù.
CS7
¹ÙÀÌÆ®´ç ÀϰöºñÆ®µéÀ» Á¤ÇÑ´Ù.
CS8
¹ÙÀÌÆ®´ç ¿©´üºñÆ®µéÀ» Á¤ÇÑ´Ù.
CCTS_OFLOW
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, CTS ¿ÍÀ̾î( RS232 ÇÁ·ÎÅäÄÝ)¿¡ ±â¹ÝÇÑ Ãâ·ÂÀÇ È帧Á¦¾î°¡ °¡´ÉÇÏ´Ù.
CRTS_IFLOW
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, RTS ¿ÍÀ̾î(RS232 ÇÁ·ÎÅäÄÝ)¿¡ ±â¹ÝÇÑ ÀÔ·ÂÀÇ È帧Á¦¾î°¡ °¡´ÉÇÏ´Ù.
MDMBUF
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, Ãâ·ÂÀÇ Ä³¸®¾î-±â¹Ý È帧Á¦¾î°¡ °¡´ÉÇÏ´Ù.
12.4.7 ±¹¼Ò ¸ðµåµé.
ÀÌ ÀýÀº ±¸Á¶Ã¼ struct termios ÀÇ c_lflag ¸â¹öÀÇ Ç÷¡±×µéÀ» ¼³¸íÇÑ´Ù. À̵é Ç÷¡±×µéÀº ÀϹÝÀûÀ¸ ·Î 12.4.4Àý [Input Modes] 189 ÆäÀÌÁö¿¡¼ ¼³¸íÇÑ, ¸ðµå Ç÷¡±×µéº¸´Ù´Â ¹ÝÇâ, ½ÅÈ£µé, ±×¸®°í Á¤±Ô ¿Í ºñÁ´±ÔÀÔ·ÂÀÇ ¼±Åõî°ú °°Àº ÀÔ·Â ÇÁ·Î¼¼½ÌÀÇ °í-¼öÁØ °üÁ¡À» Á¦¾îÇÑ´Ù.
c_flag ¸â¹ö ±×ÀÚü´Â Á¤¼öÇüÀ̰í, ´ç½ÅÀº ¿ÀÆÛ·¹ÀÌÅÍ &, |, ±×¸®°í ^¸¦ »ç¿ëÇØ¼ ±× Ç÷¡±×µé°ú ÇÊ µå¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. c_lflagÀÇ Àüü°ªµéÀ» Á¤ÇÏ·Á ½ÃµµÇÏÁö ¸»°í ´ë½Å¿¡, Á¤ÇØÁø Ç÷¡±×µé¸¸ º¯°æ Çϰí, ´Ù¸¥ ³ª¸ÓÁö °Íµé¿¡´Â ¼Õ´ëÁö ¸»¶ó.
ICANON
¸¸ÀÏ À̺ñÆ®°¡ ¼³Á¤µÇ¸é, Á¤±ÔÀÔ·Â ÇÁ·Î¼¼½Ì ¸ðµå·Î µÈ´Ù. ±×·¸Áö¾Ê´Ù¸é, ÀÔ·ÂÀº ºñÁ¤±Ô ¸ðµå·Î ó ¸®µÈ´Ù. 12.3Àý [Canonical or Not], 186 ÆäÀÌÁö ÂüÁ¶.
ECHO
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ÀԷ¹®ÀÚ°¡ ¹ÝÇâµÈ´Ù.
ECHOE
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ½ºÅ©¸°ÀÇ ÇöÀçÀÇ ¶óÀο¡ ÀÖ´Â ¸¶Áö¸· ¹®ÀÚ¸¦ Áö¿ì´Â ¿ªÇÒÀ» ÇÏ´Â ERASE ¹®ÀÚ¸¦ »ç¿ë ÇÒ ¶§ ±× ¸¶Áö¸· ¹®ÀÚ¸¦ ȸé»ó¿¡¼ ½ÇÁ¦·Î ¾ø¾ÚÀ¸·Î¼ »ç¿ëÀÚ¿¡°Ô ¹®ÀÚ°¡ ½Ç Á¦·Î Áö¿öÁ³À½À» È®ÀνÃŲ´Ù. ±×·¸Áö¾Ê´Ù¸é Áö¿öÁø ¹®ÀÚ´Â ´Ù½Ã ¹ÝÇâµÈ´Ù( ÇÁ¸°ÆÃ Å͹̳¯¿¡ Àû´çÇÑ).
À̺ñÆ®´Â ¿ÀÁ÷ ¾Õ¿¡ Ç¥½ÃµÈ °Í ¸¸À» Á¦¾îÇÑ´Ù; ECHOE¸¦ »ç¿ëÇÏÁö ¾Ê°íµµ, ICANON ºñÆ®´Â ERASE¹®ÀÚ¸¦ ½ÇÁ¦·Î ÀνÄÇϰí ÀÔ·ÂÀ» Áö¿ì´Â °ÍÀ» ±× ÀÚü¿¡¼ Á¦¾îÇϰí ÀÖ´Ù.
ECHOK
ÀÌ ºñÆ®´Â KILL ¹®ÀÚ¿¡ ´ëÇÑ Ç¥½Ã¸¦ °¡´ÉÇÏ°Ô ÇÑ´Ù. À̰ÍÀ» ÇÒ¼ö ÀÖ´Â µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. KILL ¹®ÀÚ°¡ ´·ÁÁø°÷ÀÇ Àüü ¶óÀÎÀ» ȸ鿡¼ Áö¿ì´Â °ÍÀÌ Á»´õ ³ªÀº ¹æ¹ýÀÌ´Ù. Á»´õ ¾ÈÁÁÀº ¹æ¹ýÀº KILL ¹®ÀÚ¸¦ ¹ÝÇâÇÑ ÈÄ¿¡ »õÁÙ·Î ¿Å±â´Â °ÍÀÌ´Ù. ¾î¶² ½Ã½ºÅÛÀº ÇѰ¡Áö¸¦ Çã¿ëÇϰí, ¾î¶² ½Ã½ºÅÛÀº ´Ù¸¥ Çϳª¸¦ Çã¿ëÇϰí, ¾î¶² °ÍÀº ´ç½Å¿¡°Ô µÎ°¡ÁöÁß Çϳª¸¦ ¼±ÅÃÇϵµ·Ï Çã¿ëÇÑ´Ù.
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, KILL ¹®ÀÚ´Â KILL ¹®ÀÚ°¡ Á¸ÀçÇÏÁö ¾Ê´Â°Íó·³ ´ÜÁö ±×°ÍÀ» ¹Ý ÇâÇÑ´Ù. ±×·¯¸é ÀüÀÇ ÀÔ·ÂÀ» Áö¿ü´ø KILL ¹®ÀÚ¸¦ ±â¾ïÇÏ´Â °ÍÀº »ç¿ëÀÚÀÇ ¸òÀÌ´Ù; ȸ鿡¼ ¾Æ¹«·± Ç¥½Ã°¡ ¾ø±â ¶§¹®ÀÌ´Ù.
ÀÌ ºñÆ®´Â ¿ÀÁ÷ ÀüÀÇ Ç¥½ÃµÈ °ÍÀ» Á¦¾îÇÑ´Ù; ICANON ºñÆ®´Â ±×ÀÚü·Î KILL ¹®ÀÚ¸¦ ½ÇÁ¦·Î ÀÎ½Ä Çϰí, ÀÔ·ÂÀ» Áö¿î´Ù.
ECHONL
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ°í ICANON ºñÆ®°¡ ¶ÇÇÑ ¼³Á¤µÇ¸é »õÁÙ ('\n') ¹®ÀÚ´Â ½ÉÁö¾î ECHO ºñÆ® °¡ ¼³Á¤µÇÁö ¾Ê¾ÒÀ»¶§µµ ¹ÝÇâµÈ´Ù.
ISIG
INTR, QUIT, ±×¸®°í SUSP ¹®ÀÚµéÀ» ÀνÄÇÏ´ÂÁöÀÇ ¿©ºÎ¿¡ ´ëÇÑ Á¦¾îºñÆ®ÀÌ´Ù. ÀÌ ¹®ÀÚµé°ú ¿¬°ü µÈ ÇÔ¼öµéÀº ÀÌ ºñÆ®°¡ ¼³Á¤µÆÀ»¶§¸¸ ¼öÇàµÈ´Ù. ±ÔÁ¤À̳ª ºñ±ÔÁ¤ ÀԷ¿¡ ´ëÇÑ °ÍÀº ÀÌµé ¹®ÀÚµéÀ» ÇØ¼®Çϴµ¥ ¾Æ¹«·± ¿µÇâÀÌ ¾ø´Ù.
´ç½ÅÀº ÀÌµé ¹®ÀÚµéÀÇ ÀνÄÀ» ºÒ°¡´ÉÇÒ¶§ ÁÖÀÇÇØ¼ »ç¿ëÇØ¾ßÇÑ´Ù. »ç¿ëÀÚ¿¡ ÀÇÇØ ÀÎÅÍ·´Æ®µÉ¼ö ¾ø ´Â ÇÁ·Î±×·¥Àº »ç¿ëÀÚ¿¡°Ô ¸Å¿ì ºÒÄ£ÀýÇÑ °ÍÀÌ´Ù. ¸¸ÀÏ ´ç½ÅÀÌ ÀÌ ºñÆ®¸¦ ¼Ò°ÅÇϸé, ´ç½ÅÀÇ ÇÁ·Î±× ·¥Àº »ç¿ëÀÚ¿¡°Ô ÀÌµé ¹®ÀÚµé°ú ¿¬°üÀÖ´Â ½ÅÈ£¸¦ º¸³»µµ·Ï Çã¿ëÇϰųª, ±× ÇÁ·Î±×·¥À¸·ÎºÎÅÍ Å»ÃâÇÏ ´Â ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇؾßÇÑ´Ù. 12.4.9Àý [Signal Characters] 196 ÆäÀÌÁö ÂüÁ¶.
IEXTEN
ÀÌ ºñÆ®´Â ISIG¿Í À¯»çÇÏÁö¸¸, Ưº°ÇÑ ¹®Àڵ鿡 Á¤ÀÇµÈ Á¦¾î½ÇÇà¿¡ ´ëÇÑ °ÍÀÌ´Ù. ¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ICANON °ú ISIG ±¹¼Ò ¸ðµå Ç÷¡±×¿Í IXON°ú IXOFF ÀԷ¸ðµå Ç÷¡±×¸¦ À§ÇÑ µðÆúÆ® µ¿ÀÛÀ» ¹«È¿·Î ÇÒ °ÍÀÌ´Ù.
NOFLSH
º¸Åë, INTR, QUIT, ±×¸®°í SUSP ¹®ÀÚµéÀº Å͹̳ÎÀÇ ÀԷ°ú Ãâ·Â Å¥¸¦ ¼Ò°ÅÇÏ°Ô ÇÑ´Ù. ¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é ±× Å¥µéÀº ¼Ò°ÅµÇÁö ¾Ê´Â´Ù.
TOSTOP
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ°í ½Ã½ºÅÛÀÌ ÀÛ¾÷ Á¦¾î¸¦ Áö¿øÇϸé, SIGTTOU½ÅÈ£°¡ Å͹̳¯¿¡ ¾²±â¸¦ ½Ãµµ ÇÏ´Â ¹è°æ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ¹ß»ýµÇ¾îÁø´Ù. 24.4Àý [Access to the Terminal]336 ÆäÀÌÁö ÂüÁ¶.
´ÙÀ½ ºñÆ®µéÀº BSD È®ÀåÀÌ´Ù; GNU ¶óÀ̺귯¸®´Â ´ç½ÅÀÌ ±×µéÀ» ¿äûÇÏ´Â ¾î´À ½Ã½ºÅÛ»ó¿¡¼µµ »ç¿ëÇϵµ·Ï ÀÌµé ½Éº¼µéÀ» Á¤ÀÇÇßÁö¸¸, BSD ½Ã½ºÅÛ°ú GNU½Ã½ºÅÛÀ» Á¦¿ÜÇÑ ´Ù¸¥ ½Ã½ºÅÛ¿¡´Â ¾Æ¹« ·± ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â ºñÆ®¼³Á¤ÀÌ´Ù.
ECHOKE
BSD ½Ã½ºÅÛ¿¡¼, ÀÌ ºñÆ®´Â ECHOK¸¦ ¼³Á¤ÇÒ ¶§, KILL ¹®ÀÚ¸¦ Ç¥½ÃÇÏ´Â µÎ°¡Áö ¹æ¹ýÁß Çϳª¸¦ ¼±ÅÃÇÏ°Ô ÇÑ´Ù. ¸¸ÀÏ ECHOKE °¡ ¼³Á¤µÇ¸é, KILL¹®Àڴ ȸ鿡¼ ¶óÀÎ Àüü¸¦ Áö¿ì°í; ±×·¸Áö¾Ê À¸¸é KILL¹®Àڴ ȸéÀÇ ´ÙÀ½ ¶óÀÎÀ¸·Î ¿Å±ä´Ù. ECHOKEÀÇ ¼³Á¤Àº ECHOK°¡ ¼³Á¤µÆÀ»¶§¸¸ À¯È¿ ÇÏ´Ù.
ECHOPRT
ÀÌ ºñÆ®´Â ÇϵåÄ«ÇÇ Å͹̳¯À» Á¶Á¤ÇÏ´Â ¹æ¹ýÀ¸·Î ERASE ¹®ÀÚÀÇ Ç¥½Ã¸¦ °¡´ÉÇÏ°Ô ÇÑ´Ù.
ECHOCTL
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ÇØ´çÇÏ´Â ÅØ½ºÆ® ¹®ÀÚ°¡ µû¸£´Â control¹®ÀÚ¸¦ '^'Ç¥½Ã·Î ¹ÝÇâÇÑ´Ù. ±×·¡ ¼ control-A ´Â '^A'ó·³ ³ªÅ¸³´Ù.
ALTWERASE
ÀÌ ºñÆ®´Â WERASE ¹®ÀÚ°¡ Áö¿ï°ÍÀÎÁö °áÁ¤ÇÑ´Ù. ´Ü¾îÀÇ ½ÃÀÛÁ¡¿¡¼ µÚÂÊÀ¸·Î ¹®ÀÚ¸¦ Áö¿î´Ù; ¾îµð¿¡¼ ´Ü¾î¸¦ ½ÃÀÛÇÒ°ÍÀÎÁö Àǹ®ÀÌ »ý±ä´Ù. ¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ´Ü¾îÀÇ ½ÃÀÛÁ¡Àº °ø¹é¹® ÀÚ ´ÙÀ½ÀÇ ºñ°ø¹é ¹®ÀÚ°¡ µÈ´Ù. ¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇÁö ¾ÊÀ¸¸é, ´Ü¾îÀÇ ½ÃÀÛÁ¡Àº ¿µ¼ýÀÚ ¹®ÀÚÀ̰гª, ¶Ç´Â ±×µéÀÌ ¾ø´Â ¹®ÀÚ ´ÙÀ½ÀÇ underscoreÀÌ´Ù.
FLUSHO
ÀÌ ºñÆ®´Â »ç¿ëÀÚ°¡ DISCARD ¹®ÀÚ¸¦ ŸÀÔÇÒ ¶§ Åä±Û µÈ´Ù. ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¾î ÀÖ´Â µ¿¾È¿¡, ¸ðµç Ãâ·ÂÀº ¹ö·ÁÁø´Ù. 12.4.9.52JF [Othr Special], 198 ÆäÀÌÁö ÂüÁ¶.
NOKERNINFO
ÀÌ ºñÆ®ÀÇ ¼³Á¤Àº STATUS ¹®ÀÚÀÇ Ã³¸®°¡ ºÒ°¡´ÉÇϵµ·Ï ÇÑ´Ù. 12.4.9.5Àý [Other Special] 198 Æä ÀÌÁö ÂüÁ¶.
PENDIN
¸¸ÀÏ ÀÌ ºñÆ®°¡ ¼³Á¤µÇ¸é, ´Ù½Ã ÇÁ¸°Æ®ÇÒ Çʿ䰡 ÀÖ´Â ÀÔ·Â ¶óÀÎÀÌ ÀÖÀ½À» ¾Ë¸°´Ù. REPRINT¹®ÀÚ ¸¦ Ä¡¸é ÀÌ ºñÆ®°¡ ¼³Á¤µÈ´Ù; ±× ºñÆ®´Â ÀçÇÁ¸°Æ®°¡ Á¾·áµÉ ¶§ ±îÁö ¼³Á¤»óŰ¡ Áö¼ÓµÈ´Ù. 12.4.9.2 Àý [BSD Editing]196 ÆäÀÌÁö ÂüÁ¶.
12.4.8 ¶óÀÎ ¼Óµµ.
Å͹̳¯ ¶óÀÎ ¼Óµµ´Â Å͹̳¯»ó¿¡¼ ¾ó¸¶³ª »¡¸® µ¥ÀÌÅ͸¦ ÀÐ°í ¾µ¼ö ÀÖ´ÂÁö¸¦ ÄÄÇ»ÅÍ¿¡°Ô ¾Ë¸°´Ù. ¸¸ÀÏ Å͹̳¯ÀÌ Á÷·Ä ¶óÀÎÀ¸·Î ¿¬°áµÇ¸é, Å͹̳¯ ¼Óµµ¸¦ ±× ¶óÀÎÀÇ ½ÇÁ¦ ¼Óµµ¿¡ ¸Âµµ·Ï ÁöÁ¤ÇؾßÁö, Å͹̳¯ ÀÚ½ÅÀÇ ÀÓÀÇ´ë·Î ±× ¼Óµµ¸¦ ÁöÁ¤ÇÒ ¼ö ¾ø°í, ¸¸¾à ±×·¸°Ô Çß´Ù¸é Åë½ÅÀº ´ÜÀýµÈ´Ù. ½ÇÁ¦ Á÷·Ä Æ÷Æ®´Â ¿ÀÁ÷ ¾î¶² Ç¥ÁØ ¼Óµµ¸¸À» ¹Þ¾ÆµéÀδÙ. ¾î¶² Ưº°ÇÑ Çϵå¿þ¾î´Â ½ÉÁö¾î ¸ðµç Ç¥ÁØ ¼Óµµ¸¦ Áö ¿øÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. Á¦·Î(zero)·Î ¼Óµµ¸¦ Á¤ÇÏ´Â °ÍÀº ¿¬°áµÈ »óŸ¦ ²÷°í ¸ðµ© Á¦¾î ½ÅÈ£¸¦ ²ô´Â °ÍÀÌ´Ù.
¸¸ÀÏ Å͹̳¯ÀÌ Á÷·Ä ¶óÀÎÀÌ ¾Æ´Ï¶ó¸é(¿¹¸¦ µé¾î, ±×°ÍÀÌ ³×Æ®¿÷ ¿¬°áÀ̶ó¸é), ¶óÀÎÀÇ ¼Óµµ´Â ½ÇÁ¦ µ¥ÀÌÅÍ Àü¼Û¼Óµµ¿¡ ¿µÇâÀ» ¹ÞÁö ¾ÊÁö¸¸, ¾î¶² ÇÁ·Î±×·¥¿¡¼´Â ÇÊ¿äÇÑ Ã¤¿ö³Ö±â(padding)ÀÇ ¾çÀ» °á Á¤Çϱâ À§ÇØ ±×°ÍÀ» »ç¿ëÇÒ °ÍÀÌ´Ù. ±×°ÍÀº ½ÇÁ¦ Å͹̳¯ÀÇ ¼Óµµ¿¡ ´ëÀÀµÇ´Â ¶óÀÎ ¼Óµµ °ªÀ» Á¤Çϱ⠿¡ °¡Àå ÁÁÁö¸¸, ´ç½ÅÀº ä¿ö³Ö±â(padding)ÀÇ ´Ù¾çÇÑ ¾çÀ» ´Ù¾çÇÑ °ªÀ¸·Î ¾ÈÀüÇÏ°Ô ½ÃÇèÇØ¾ß ÇÑ´Ù.
°¢ Å͹̳¯À» À§ÇÑ µÎ °³ÀÇ ¶óÀÎ ¼Óµµ°¡ Àִµ¥, ÀÔ·ÂÀ» À§ÇѰͰú Ãâ·ÂÀ» À§ÇÑ °ÍÀÌ´Ù. ´ç½ÅÀº ±×µé À» µ¶¸³ÀûÀ¸·Î Á¤ÇÒ ¼ö ÀÖÁö¸¸, ´ëºÎºÐÀÇ Å͹̳¯¿¡¼´Â µ¿ÀÏÇÑ ¼Óµµ¸¦ »ç¿ëÇÑ´Ù.
¼Óµµ°ªÀº ±¸Á¶Ã¼ struct termios ¿¡ ÀúÀåµÇ¾î ÀÖÁö¸¸, Á÷Á¢ÀûÀ¸·Î ±¸Á¶Ã¼ struct termios¾È¿¡ ÀÖ´Â ±×µéÀ» Á÷Á¢ÀûÀ¸·Î ¾ï¼¼½ºÇÏ·Á ½ÃµµÇÏÁö ¸»¶ó. ´ë½Å¿¡, ´ç½ÅÀº ±×µéÀ» Àаí ÀúÀåÇϱâ À§Çؼ ´ÙÀ½ ÇÔ ¼ö¸¦ »ç¿ëÇ϶ó.
ÇÔ¼ö : speed_t cfgetospeed(const termios *termios_p)
ÀÌ ÇÔ¼ö´Â ±¸Á¶Á¦ *termios`p¾È¿¡ ÀúÀåµÇ¾î ÀÖ´Â Ãâ·Â ¶óÀÎ ¼Óµµ¸¦ ¸®ÅÏÇÑ´Ù.
ÇÔ¼ö : speed_t cfgetispeed (const struct termios *termios_p)
ÀÌ ÇÔ¼ö´Â ±¸Á¶Ã¼ *termios`p¾È¿¡ ÀúÀåµÇ¾î ÀÖ´Â ÀÔ·Â ¶óÀÎ ¼Óµµ¸¦ ¸®ÅÏÇÑ´Ù.
ÇÔ¼ö : int cfsetospeed (struct termios *termios_p, speed_t speed)
ÀÌ ÇÔ¼ö´Â Ãâ·Â ¼Óµµ·Î *termios`p ¿¡ speed¸¦ ¸®ÅÏÇÑ´Ù. º¸ÅëÀÇ ¸®ÅϰªÀº 0À̰í, ¿¡·¯°¡ ¹ß»ýÇϸé -1À» ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ speed°¡ ¼Óµµ°ªÀÌ ¾Æ´Ï¸é, cfsetospeed´Â -1À» ¸®ÅÏÇÑ´Ù.
ÇÔ¼ö : int cfsetispeed (struct termios *termios_p, speed_t speed)
ÀÌ ÇÔ¼ö´Â ÀÔ·Â ¼Óµµ·Î *termios`p¿¡ speed¸¦ ÀúÀåÇÑ´Ù. º¸ÅëÀÇ ¸®ÅϰªÀº 0ÀÌ°í ¿¡·¯°¡ ¹ß»ýÇϸé -1À» ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ speed°¡ ¼Óµµ°ªÀÌ ¾Æ´Ï¶ó¸é, cfsetopeeed´Â -1À» ¸®ÅÏÇÑ´Ù.
ÇÔ¼ö : int cfsetspeed (struct termios *termios_p, speed_t speed)
ÀÌ ÇÔ¼ö´Â ÀԷ°ú Ãâ·ÂÀÇ ¼Óµµ µÑÀ» À§ÇØ *termios`p·Î speed¸¦ ÀúÀåÇÑ´Ù. º¸Åë ¸®ÅϰªÀº 0À̰í, ¿¡ ·¯°¡ ¹ß»ýÇϸé -1À» ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ speed°¡ ¼Óµµ°ªÀÌ ¾Æ´Ï¶ó¸é, cfsetspeed´Â -1À» ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö´Â 4.4 BSD È®ÀåÀÌ´Ù.
µ¥ÀÌÅÍŸÀÔ: speed_t
speed_typeÀº unsigned integerÇüÀ¸·Î ¶óÀÎÀÇ ¼Óµµ¸¦ ³ªÅ¸³»±â À§ÇØ »ç¿ëµÈ´Ù.
cfsetospeed ¿Í cfsetispeed ÇÔ¼ö´Â ±× ½Ã½ºÅÛÀÌ °£´ÜÈ÷ Ãë±ÞÇÒ ¼ö ¾ø´Â ¼Óµµ°ªÀÏ °æ¿ì¿¡¸¸ ¿¡·¯¸¦ Ç¥½ÃÇÑ´Ù. ¸¸ÀÏ ´ç½ÅÀÌ ±âº»ÀûÀ¸·Î ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Â ¼Óµµ°ªÀ» ÁöÁ¤Çϸé, ÀÌ ÇÔ¼ö´Â ¼º°øÇÒ °ÍÀÌ´Ù. ±×·¯³ª ±×µéÀº ¾î¶² Ưº°ÇÑ Çϵå¿þ¾î°¡ Á¤ÇØÁø ¼Óµµ¸¦ ½ÇÁ¦·Î Áö¿øÇÒ ¼ö ÀÖ´ÂÁö¸¦ üũÇÒ ¼ö ¾ø°í, ½ÇÁ¦·Î ±×µéÀº ´ç½ÅÀÌ ¼Óµµ¸¦ ¼³Á¤ÇÏ·Á °èȹÇÏ´Â µð¹ÙÀ̽º¸¦ ¾ËÁö ¸øÇÑ´Ù. ¸¸ÀÏ ´ç½ÅÀÌ Ã³¸®µÉ¼ö ¾ø´Â °ªÀ¸·Î Ưº°ÇÑ µð¹ÙÀ̽ºÀÇ ¼Óµµ¸¦ ¼³Á¤ÇÏ·Á°í tcsetattrÀ» »ç¿ëÇϸé, tcsetattrÀº -1À» ¸®ÅÏÇÑ´Ù.
À̽ļº ³ëÆ®: GNU ¶óÀ̺귯¸®¿¡¼, ÇÔ¼öµéÀº ÀԷ°ú Ãâ·ÂÀ¸·Î ÃÊ(second)´ç ºñÆ®·Î °è»êµÈ ¼Óµµ ¸¦ ¹Þ¾ÆµéÀδÙ. ´Ù¸¥ ¶óÀ̺귯¸®µéÀº ¼Óµµ¸¦ Ưº°ÇÑ ÄÚµå·Î ÁöÁ¤ÇØÁØ´Ù. POSIX.1°ú À̽ļºÀ» À§ ÇØ¼´Â, ´ç½ÅÀº ¼Óµµ¸¦ ³ªÅ¸³»±â À§ÇÑ ´ÙÀ½ÀÇ ½Éº¼µé ÁßÀÇ Çϳª¸¦ »ç¿ëÇØ¾ß¸¸ ÇÑ´Ù; ±×µéÀÇ Á¤È® ÇÑ ¼ýÀÚÀû °ªµéÀº ½Ã½ºÅÛ_ÀÇÁ¸ÀûÀÌÁö¸¸, °¢ À̸§Àº Á¤ÇØÁø Àǹ̸¦ °®°í ÀÖ´Ù. B110Àº 110 bps¸¦ À§ÇѰÍÀ̰í, B300Àº 300 bps¸¦ À§ÇѰÍÀ̰í.. µîµî..À̰ÍÀº ¼Óµµ¸¦ ³ªÅ¸³»±â À§ÇÑ ´Ù¸¥ ¹æ¹ýµé°ú Àü Çô À̽ļºÀÌ ¾øÁö¸¸, ±×µéÀº Ưº°ÇÑ Á÷·Ä ¶óÀÎÀ» Áö¿øÇÒ ¼ö ÀÖ´Â ¼ÓµµÀÌ´Ù.
B0 B50 B75 B110 B134 B150 B200
B300 B600 B1200 B1800 B2400 B4800
B9600 B19200 B38400
BSD´Â À¯»çÀ̸§À¸·Î µÎ °³ÀÇ ºÎ°¡Àû ¼Óµµ ½Éº¼µéÀº Á¤ÀÇÇÑ´Ù. EXTA ´Â B19200¿Í °°°í, EXTB´Â B38400°ú °°´Ù. À̵é À¯»ç¾î´Â ¿À·¡µÈ °ÍÀÌ´Ù.
ÇÔ¼ö : int cfmakeraw (struct termios *termios_p)
ÀÌ ÇÔ¼ö´Â BSD¿¡¼ ÀüÅëÀûÀ¸·Î ¿ø·¡ÀÇ ¸ðµå"·Î ºÒ¸®¿öÁö´Â ¸ðµå·Î *termios`p¸¦ ¼³Á¤ÇÏ´Â ½¬¿î ¹æ ¹ýÀ» Á¦°øÇÑ´Ù. ±×°ÍÀº Á¤È®È÷ ÀÌ·± ÀÏÀ» ÇÑ´Ù.
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;
12.4.9 Ưº° ¹®ÀÚµé.
Á¤±ÔÀԷ¿¡¼, Å͹̳¯ ±¸µ¿±â´Â ´Ù¾çÇÑ Á¦¾î ÇÔ¼öµéÀ» ¼öÇàÇϴ Ưº°¹®ÀÚµéÀÇ ¼ö¸¦ ÀνÄÇÑ´Ù. À̵é Àº ÆíÁýÀÔ·ÂÀ» À§ÇÑ ERASE ¹®ÀÚ(º¸ÅëÀº DEL)¿Í ±×¸®°í ´Ù¸¥ ÆíÁý¹®ÀÚµéÀÌ Æ÷ÇԵȴÙ. SIGINT ½Å È£¸¦ º¸³»±â À§ÇÑ INTR ¹®ÀÚ( º¸Åë C -c)¿Í ´Ù¸¥ ½ÅÈ£-¹ß»ý ¹®ÀÚµéÀº, ´Ù¸¥ Á¤±ÔÀÔ·ÂÀ̳ª ºñÁ¤±Ô ÀÔ·Â ¸ðµå¿¡¼ À¯¿ëÇÒ °ÍÀÌ´Ù. ¸ðµç ÀÌµé ¹®ÀÚµéÀº ÀÌ Àý¿¡ ¼³¸íµÇ¾î ÀÖ´Ù.
Ưº°ÇÑ ¹®ÀÚµéÀº ±¸Á¶Ã¼ struct termiosÀÇ c_cc ¸â¹ö¿¡ Á¤ÇØÁ®ÀÖ´Ù. ÀÌ ¸â¹ö´Â ¹è¿ÀÌ´Ù; °¢ ¿ä¼Ò´Â Ưº°ÇÑ ±ÔÄ¢À» °¡Áø ¹®ÀÚ¸¦ Á¤ÇÑ´Ù. °¢ ¿ä¼Ò´Â ±× ¿ä¼ÒÀÇ À妽º¸¦ À§ÇÑ ½Éº¼ »ó¼ö¸¦ °®´Â´Ù_¿¹¸¦ µé¾î INTRÀº INTR ¹®ÀÚ¸¦ Á¤ÇÏ´Â ¿ä¼ÒÀÇ À妽ºÀÌ´Ù, ±×·¡¼ INTR ¹®ÀÚ·Î '='À» Á¤ÇÏ¿© termios.c_cc[INTR]¿¡ '='À» ÀúÀåÇÑ´Ù.
´Ù¸¥ ½Ã½ºÅÛ¿¡¼, ´ç½ÅÀº _POSIX_VDISABLE¸¦ Á¤ÇÏ¿© Ưº° ¹®ÀÚ ÇÔ¼öµéÀ» ºÒ°¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ ´Ù. ÀÌ °ªÀº ¾î´À °¡´ÉÇÑ ¹®ÀÚ ÄÚµå¿Í °°Áö ¾Ê´Ù. 27.2Àý [Options for Files] 375 ÆäÀÌÁö¸¦ Âü°í·Î, ¿î¿µÃ¼Á¦°¡ _POSIX_VDISABLE¸¦ ´ç½Å¿¡°Ô Áö¿øÇÏ´ÂÁöÀÇ ¿©ºÎ¸¦ ¾î¶»°Ô¾Ë¼öÀÖ´ÂÁö¸¦ º¸¾Æ¶ó.
12.4.9.1 ÀÔ·Â ÆíÁýÀ» À§ÇÑ ¹®ÀÚµé.
ÀÌµé Æ¯º° ¹®ÀÚµéÀº ¿ÀÁ÷ Á¤±Ô(canonical) ÀÔ·Â ¸ðµå¿¡¼¸¸ ÀÛµ¿µÈ´Ù. 12.3Àý [Canonical or Not], 186 ÆäÀÌÁö ÂüÁ¶.
¸ÅÅ©·Î : int VEOF
À̰ÍÀº Ưº° Á¦¾î ¹®ÀÚ ¹è¿¿¡ ÀÖ´Â EOF ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚ(subscript)ÀÌ´Ù. termios.c_cc[VEOF] ´Â ±× ¹®ÀÚ ÀÚü¸¦ ÀúÀåÇϰí ÀÖ´Ù. EOF ¹®ÀÚ´Â ¿ÀÁ÷ Á¤±ÔÀÔ·Â ¸ðµå¿¡¼¸¸ ÀνĵȴÙ. ±× ¹®ÀÚ´Â »õÁÙ ¹®ÀÚ¿Í °°Àº ¹æ¹ýÀ¸·Î ¶óÀÎÀÇ Á¾·áÀÚ(terminator)·Î¼ µ¿ÀÛÇÏÁö¸¸, ¸¸ÀÏ EOF ¹®ÀÚ°¡ ¶óÀÎÀÇ Ã³À½¿¡ Á¸ÀçµÈ´Ù¸é, 0¹ÙÀÌÆ®¸¦ ¸®ÅÏÇÏ¿©, ÆÄÀÏÀÇ ³¡ÀÓÀ» ÁöÀûÇÑ´Ù. EOF ¹®ÀÚ ±× ÀÚü´Â ¹ö·ÁÁø´Ù. º¸Åë, EOF ¹®ÀÚ´Â C-d ÀÌ´Ù.
¸ÅÅ©·Î : int VEOL
À̰ÍÀº Ưº° Á¦¾î ¹®Àڹ迿¡ ÀÖ´Â EOL ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VEOL] Àº ¹®ÀÚ ±× ÀÚü¸¦ ÀúÀåÇϰí ÀÖ´Ù. EOL ¹®ÀÚ´Â ¿ÀÁ÷ Á¤±ÔÀÔ·Â ¸ðµå¿¡¼¸¸ ÀνĵȴÙ. ±×°ÍÀº »õÁÙ ¹®ÀÚó·³ ¶óÀÎ Á¾·áÀÚ(terminator) ·Î¼ µ¿ÀÛÇÑ´Ù. ÀÔ·Â ¶óÀο¡¼ ¸¶Áö¸· ¹®ÀÚ·Î ÀÐÇôÁø EOL¹®ÀÚ´Â ¹ö·ÁÁø ´Ù. ÇÑ ¶óÀÎÀÇ ³¡ÀÎ RETÀ» ¸¸µé±â À§Çؼ EOL ¹®ÀÚ¸¦ »ç¿ëÇÒ Çʿ䰡 ¾ø´Ù. ´ÜÁö ICRNL Ç÷¡±×¸¦ ¼³Á¤Ç϶ó. ½ÇÁ¦·Î, À̰ÍÀÌ µðÆúÆ® »óȲÀÌ´Ù.
¸ÅÅ©·Î : int VERASE
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â ERASE¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VERASE] ´Â ±× ¹®ÀÚ ÀÚü¸¦ ÀúÀåÇÑ´Ù. ERASE¹®ÀÚ´Â ¿ÀÁ÷ Á¤±ÔÀÔ·Â ¸ðµå¿¡¼¸¸ ÀνĵȴÙ. »ç¿ëÀÚ°¡ erase ¹®ÀÚ¸¦ ŸÀÔÇÒ ¶§, Àü¿¡ ŸÀÔµÈ ¹®ÀÚ°¡ ¹ö·ÁÁø´Ù. ( ¸¸ÀÏ ±× Å͹̳¯ÀÌ ´ÙÁß¹ÙÀÌÆ® (multibyte)¹®ÀÚ¿À» ¹ß»ý ½ÃŲ´Ù¸é, À̰ÍÀº ÀԷ¿¡¼ ¹ö·ÁÁø °ÍÀÌ ÇÑ ¹ÙÀÌÆ®º¸´Ù ´õ ¸¹À» ¼öµµ ÀÖ´Ù.) À̰ÍÀº ÅØ½ºÆ®ÀÇ ÇöÀç ¶óÀκ¸´Ù ¾ÕÀǰÍÀ» Áö¿ï¼ö ¾ø´Ù. ERASE ¹®ÀÚ ±× ÀÚü´Â ¹ö·ÁÁø´Ù. º¸Åë ERASE¹®ÀÚ´Â DEL ÀÌ ´Ù.
¸ÅÅ©·Î : int VKILL
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â KILL ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VKILL] Àº ¹®ÀÚ ±× ÀÚü¸¦ ÀúÀåÇϰí ÀÖ´Ù. KILL ¹®ÀÚ´Â ¿ÀÁ÷ Á¤±ÔÀÔ·Â ¸ðµå¿¡¼¸¸ ÀνĵȴÙ. »ç¿ëÀÚ°¡ kill ¹®ÀÚ¸¦ Ÿ ÀÔÇÒ ¶§, ÀÔ·ÂÀÇ ÇöÀç¶óÀÎÀÇ ÀüüÀÇ ³»¿ëÀÌ ¹ö·ÁÁø´Ù. kill ¹®ÀÚµµ ¹ö·ÁÁø´Ù. KILL ¹®ÀÚ´Â º¸Åë C-u ÀÌ´Ù.
12.4.9.2 ÆíÁý ¹®ÀÚÀÇ BSD È®Àå.
ÀÌµé Æ¯º° ¹®ÀÚµéÀº ¿ÀÁ÷ Á¤±ÔÀÔ·Â ¸ðµå¿¡¼¸¸ µ¿ÀÛÇÑ´Ù. 12.3Àý [Canonical of Not], 186 ÆäÀÌÁö ÂüÁ¶. ±×µéÀº BSD È®ÀåÀÌ´Ù; GNU ¶óÀ̺귯¸®´Â ±×µéÀ» ¿äûÇϸé, ¾î´À ½Ã½ºÅÛ »ó¿¡¼µçÁö ±× ½É º¼µéÀ» »ç¿ëÇÏ°Ô ÇÏÁö¸¸, ±×¹®ÀÚµéÀº BSD ½Ã½ºÅÛÀ» Á¦¿ÜÇϰí´Â ¾Æ¹«µ¥¼µµ µ¿ÀÛÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.
¸ÅÅ©·Î : int VEOL2
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â EOL2 ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VEOL2] ´Â ¹®ÀÚ ±× ÀÚü¸¦ ÀúÀåÇÑ´Ù. EOL2¹®ÀÚ´Â EOL¹®ÀÚó·³ µ¿ÀÛÇÏÁö¸¸( À§¸¦ º¸¶ó ) ´Ù¸¥ ¹®ÀÚ°¡ µÉ ¼ö ÀÖ´Ù. ±× ·¡¼, ´ç½ÅÀÌ ÀÔ·Â ¶óÀÎÀ» ³¡³»±â À§Çؼ µÎ °³ÀÇ ¹®ÀÚµéÀ» Á¤ÇÒ¼ö ÀÖÁö¸¸,±×µéÁß Çϳª¸¦ À§Çؼ EOL ¹®ÀÚ¸¦ ¼³Á¤ÇÏ°í ´Ù¸¥ °ÍÀ» À§Çؼ EOL2 ¹®ÀÚ¸¦ ¼³Á¤Ç϶ó.
¸ÅÅ©·Î : int VWERASE
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â WERASE ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VWERSE] ´Â ¹®ÀÚ ±×ÀÚü¸¦ ÀúÀåÇÑ´Ù. WERASE ¹®ÀÚ´Â ¿ÀÁ÷ Á¤±ÔÀÔ·Â ¸ðµå¿¡¼¸¸ µ¿ÀÛÇÑ´Ù. ±×°ÍÀº ÀÌÀü ÀÔ ·ÂÀÇ Àüü ´Ü¾î¸¦ Áö¿î´Ù.
¸ÅÅ©·Î : int VREPRINT
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â REPRINT¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[BREPRINT]´Â ¹® ÀÚ ±×ÀÚü¸¦ ÀúÀåÇÑ´Ù. REPRINT ¹®ÀÚ´Â ¿ÀÁ÷ Á¤±ÔÀÔ·Â ¸ðµå¿¡¼¸¸ ÀνĵȴÙ. ±×°ÍÀº ÇöÀçÀÇ ÀÔ ·Â¶óÀÎÀ» ´Ù½Ã ÇÁ¸°Æ®ÇÑ´Ù.
¸ÅÅ©·Î : int VLNEXT
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â LNEXT ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VLNEXT]´Â ¹®ÀÚ ±×ÀÚü¸¦ ÀúÀåÇÑ´Ù. LNEXT ¹®ÀÚ´Â ¿ÀÁ÷ IEXTENÀÌ ¼³Á¤µÇ¾úÀ»¶§¸¸ ÀνĵȴÙ. »ç¿ëÀÚ°¡ ŸÀÔÇÑ ´ÙÀ½¹®ÀÚÀÇ ÆíÁýÀ» ºÒ°¡´ÉÇÏ°Ô ÇÑ´Ù. À̰ÍÀº Emacs¿¡¼ C-q ¿Í À¯»çÇÏ´Ù. "LNEXT"´Â "literal next"¸¦ ³ªÅ¸³½´Ù. LNEXT¹®ÀÚ´Â º¸Åë C-v ÀÌ´Ù.
12.4.9.3 ½ÅÈ£¸¦ ¹ß»ý½ÃŰ´Â ¹®ÀÚµé.
ÀÌµé Æ¯º°¹®ÀÚµéÀº Á¤±Ô¸ðµå³ª ºñÁ¤±Ô¸ðµå¸¦ »ó°üÇÏÁö ¾Ê°í µ¿ÀÛÇÏÁö¸¸, ISIG Ç÷¡±×°¡ ¼³Á¤µÇ¾úÀ» ¶§¸¸ µ¿ÀÛÇÑ´Ù.( 12.4.7Àý [Local Modes], 192ÆäÀÌÁö ÂüÁ¶.)
¸ÅÅ©·Î : int VINTR
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â INTR ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VINTR] Àº ¹®ÀÚ ±× ÀÚü¸¦ ÀúÀåÇÑ´Ù. INTR(interrupt)¹®ÀÚ´Â Å͹̳¯°ú ¿¬°üµÈ Àü¸é ÀÛ¾÷¿¡ ÀÖ´Â ¸ðµç ÇÁ·Î¼¼½º ¸¦ À§ ÇØ SIGINT ½ÅÈ£¸¦ ¹ß»ý½ÃŲ´Ù. INTR ¹®ÀÚ ±×ÀÚü´Â ¹ö·ÁÁø´Ù. 21Àå [Signal Handling], 271 ÆäÀÌ Áö¸¦ ÂüÁ¶·Î, ½ÅÈ£¿¡ ´ëÇÑ Á¤º¸¸¦ º¸¾Æ¶ó. Ưº°È÷, INTR ¹®ÀÚ´Â C-c ÀÌ´Ù.
¸ÅÅ©·Î : int VQUIT
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â QUIT¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VQUIT] ´Â ¹®ÀÚ ±× ÀÚü¸¦ ÀúÀåÇÑ´Ù. QUIT ¹®ÀÚ´Â Å͹̳¯°ú ¿¬°üµÈ Àü¸éÀÛ¾÷¿¡ ÀÖ´Â ¸ðµç ÇÁ·Î¼¼½º¸¦ À§ÇÑ SIGQUIT ½ÅÈ£¸¦ ¹ß»ý½ÃŲ´Ù. QUIT ¹®ÀÚ ±×ÀÚü´Â ¹ö·ÁÁø´Ù. 21Àå[Signal Handling], 271 ÆäÀÌÁö¿¡¼ ½ÅÈ£ ¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸¸¦ ÂüÁ¶Ç϶ó. Ưº°È÷, QUIT ¹®ÀÚ´Â C-\ÀÌ´Ù.
¸ÅÅ©·Î : int VSUSP
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â SUSP ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VSUSP]´Â ¹®ÀÚ ±× ÀÚü¸¦ ÀúÀåÇÑ´Ù. SUSP(suspend) ¹®ÀÚ´Â ÀÛ¾÷Á¦¾î¸¦ Áö¿øÇÏ´Â µ¿ÀÛ¿¡¼¸¸ ÀνĵȴÙ( 24Àå [Job Control] 335 ÆäÀÌÁö ÂüÁ¶). ±×°ÍÀº Å͹̳¯°ú ¿¬°üµÈ Àü¸é ÀÛ¾÷¿¡ ÀÖ´Â ¸ðµç ÇÁ·Î¼¼½ºµé¿¡°Ô º¸³»±â À§ÇÑ SIGTSTP ½ÅÈ£¸¦ ¹ß»ý½ÃŲ´Ù. SUSP ¹®ÀÚ ±×ÀÚü´Â ¹ö·ÁÁø´Ù. ½ÅÈ£¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â 21Àå [Signal Handling] 271 ÆäÀÌÁö¸¦ ÂüÁ¶Ç϶ó. ¸î¸î ÀÀ¿ëÇÁ·Î±×·¥¿¡¼´Â SUSP ¹®ÀÚ¿¡ ´ëÇÑ ÇØ¼® À» ºÒ°¡´ÉÇÏ°Ô ÇÑ´Ù. ¸¸ÀÏ ´ç½ÅÀÇ ÇÁ·Î±×·¥ÀÌ ±×·¸°Ô ÇÑ´Ù¸é, »ç¿ëÀÚ°¡ ±× ÀÛ¾÷À» ¸ØÃâ¼ö ÀÖ°Ô Çϱâ À§ÇÑ ´Ù¸¥ ¸ÞÄ«´ÏÁòÀ» Á¦°øÇØ¾ß ÇÒ °ÍÀÌ´Ù. »ç¿ëÀÚ°¡ ÀÌ ¸ÞÄ«´ÏÁòÀ» ºÒ·¶À» ¶§, ÇÁ·Î±×·¥Àº ´ÜÁö ±× ÇÁ·Î¼¼½º ÀÚ½ÅÀÌ ¾Æ´Ñ, ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î¼¼½º±×·ì¿¡°Ô SIGTSTP ½ÅÈ£¸¦ º¸³½´Ù. 21.6.2Àý [Signaling Another Process] 295 ÆäÀÌÁö ÂüÁ¶.
¸ÅÅ©·Î : int VDSUSP
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â DSUSP ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VDSUSP] ´Â ¹® ÀÚ ±×ÀÚü¸¦ ÀúÀåÇÑ´Ù. DSUSP(suspend) ¹®ÀÚ´Â ÀÛ¾÷ Á¦¾î¸¦ Áö¿øÇÑ´Â µ¿ÀÛ¿¡¼¸¸ ÀνĵȴÙ(24Àå [Job Control] 335 ÆäÀÌÁö ÂüÁ¶). ±×°ÍÀº SUSP ¹®ÀÚó·³ SIGTSTP ½ÅÈ£¸¦ º¸³»Áö¸¸, ÇÁ·Î±×·¥ÀÌ ÀÔ·ÂÀ¸·Î ±×°ÍÀ» ÀÐÀ¸·Á ½ÃµµÇÏ´Â, À߸øµÈ ÇൿÀ» ÃëÇÒ ¶§ ¹ß»ýÇÑ´Ù. ÀÛ¾÷Á¦¾î¸¦ Áö¿øÇÏ´Â ¸ðµç ½Ã ½ºÅÛ¿¡¼ DSUSP°¡ Áö¿øµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ¿ÀÁ÷ BSD ½Ã½ºÅÛ¿¡¼¸¸ Áö¿øµÈ´Ù. ½ÅÈ£¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â 21Àå [Signal Handling], 271 ÆäÀÌÁö¸¦ ÂüÁ¶Ç϶ó. Ưº°È÷, DSUSP ¹®ÀÚ´Â C-y ÀÌ´Ù.
12.4.9.4 È帧 Á¦¾î¸¦ À§ÇÑ Æ¯º° ¹®ÀÚµé.
ÀÌµé Æ¯º° ¹®ÀÚµéÀº Á¤±ÔÀÔ·Â ¸ðµå³ª ºñÁ¤±ÔÀԷ¸ðµå¿¡ »ó°ü¾øÀÌ µ¿ÀÛµÇÁö¸¸, ±×µéÀÇ »ç¿ëÀº IXON °ú IXOFF Ç÷¡±×¿¡ ÀÇÇØ Á¦¾îµÈ´Ù. ( 12.4.4Àý [Input Modes], 189 ÆäÀÌÁö ÂüÁ¶.)
¸ÅÅ©·Î : int VSTART
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡¼ START ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VSTART] ´Â ¹®ÀÚ ±×ÀÚü¸¦ ÀúÀåÇÑ´Ù. START ¹®ÀÚ´Â IXON °ú IXOFF ÀÔ·Â ¸ðµå¸¦ Áö¿øÇϱâ À§Çؼ »ç¿ëµÈ´Ù. ¸¸ÀÏ IXONÀÌ ¼³Á¤µÇ°í, START ¹®ÀÚ¸¦ ¹ÞÀ¸¸é º¸·ùµÈ Ãâ·ÂÀ» ´Ù½Ã ½ÃÀÛÇÑ´Ù. À̶§ START ¹®ÀÚ´Â ¹ö ·ÁÁø´Ù. ¸¸ÀÏ IXOFF °¡ ¼³Á¤µÇ¸é, ½Ã½ºÅÛÀº Å͹̳¯¿¡ START ¹®ÀÚ¸¦ Àü¼ÛÇÒ °ÍÀÌ´Ù. START ¹® ÀÚÀÇ º¸ÅëÀÇ °ªÀº C-q ÀÌ´Ù. ´ç½ÅÀÌ ¹«¾ùÀ¸·Î Á¤ÇϵçÁö¿¡ »ó°ü¾øÀÌ Çϵå¿þ¾î¿¡ C-q·Î Á¤ÇØÁ® ÀÖ´Ù ¸é ´ç½ÅÀº À̰ªÀ» º¯°æÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù.
¸ÅÅ©·Î : int VSTOP
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â STOP ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VSTOP] ´Â ¹®ÀÚ ±× ÀÚü¸¦ ÀúÀåÇÑ´Ù. STOP ¹®ÀÚ´Â IXON °ú IXOFF ÀÔ·Â ¸ðµå¸¦ Áö¿öÇϱâ À§ÇØ »ç¿ëµÈ´Ù. ¸¸ÀÏ IXONÀÌ ¼³Á¤µÇ°í, STOP ¹®ÀÚ¸¦ ¹ÞÀ¸¸é Ãâ·ÂÀ» º¸·ù½ÃŲ´Ù; À̶§ STOP ¹®ÀÚ ÀÚü´Â ¹ö·ÁÁø´Ù. ¸¸ ÀÏ IXOFF °¡ ¼³Á¤µÇ¸é, ½Ã½ºÅÛÀº ÀÔ·ÂÅ¥¿¡¼ ¿À¹öÇ÷ο찡 ¹ß»ýÇÏ´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ Å͹̳¯¿¡ STOP ¹®ÀÚ¸¦ Àü¼ÛÇÒ °ÍÀÌ´Ù. STOP¸¦ À§Çؼ º¸Åë »ç¿ëµÇ´Â °ªÀº C-s ÀÌ´Ù. ´ç½ÅÀº ´ç½ÅÀÌ ¹«¾ù À¸·Î À̰ªÀ» º¯°æÇϵçÁö¿¡ »ó°ü¾øÀÌ Çϵå¿þ¾î¿¡¼ C-s·Î °íÁ¤µÇ¾î ÀÖ´Ù¸é, À̰ªÀ» º¯°æÇÒ ¼ö ¾ø´Ù.
12.4.9.5 ´Ù¸¥ Ưº° ¹®ÀÚµé.
À̰÷¿¡¼´Â BSD ½Ã½ºÅÛ¿¡¼ Àǹ̰¡ ÀÖ´Â µÎ °³ÀÇ ºÎ°¡Àû Ưº° ¹®ÀÚµéÀ» ¼³¸íÇÑ´Ù.
¸ÅÅ©·Î : int VDISCARD
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â DISCARD ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VDISCARD] ´Â ¹®ÀÚ ±×ÀÚü¸¦ ÀúÀåÇÑ´Ù. DISCART¹®ÀÚ´Â IEXTENÀÌ ¼³Á¤µÇ¾úÀ»¶§¸¸ ÀνĵȴÙ. ±× ¿µÇâÀº discard-output Ç÷¡±×¸¦ Åä±ÛÇϰԵȴÙ. ÀÌ Ç÷¡±×°¡ ¼³Á¤µÇ¸é, ¸ðµç ÇÁ·Î±×·¥ Ãâ·ÂÀº ¹ö·ÁÁø´Ù. Çà ·¡±× ¼³Á¤Àº ¶ÇÇÑ Ãâ·Â ¹öÆÛ¾È¿¡ ÇöÀç Á¸ÀçÇÏ´Â ¸ðµç Ãâ·ÂÀ» ¹ö¸°´Ù.
¸ÅÅ©·Î : int VSTATUS
À̰ÍÀº Ưº° Á¦¾î¹®ÀÚ ¹è¿¿¡ ÀÖ´Â STATUS ¹®ÀÚ¸¦ À§ÇÑ Ã·ÀÚÀÌ´Ù. termios.c_cc[VSTATUS] ´Â ¹®ÀÚ ±× ÀÚü¸¦ ÀúÀåÇÑ´Ù. STATUS ¹®ÀÚÀÇ ¿µÇâÀº ÇöÀç ÇÁ·Î¼¼½º°¡ ¾î¶»°Ô µ¿ÀÛÇϰí ÀÖ´ÂÁö¿¡ ´ë ÇÑ »óȲ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϱâ À§ÇÑ °ÍÀÌ´Ù. STATUS ¹®ÀÚ´Â ¿ÀÁ÷ Á¤±Ô ÀÔ·Â ¸ðµå¿¡¼¸¸ ÀνĵȴÙ.
12.4.10 ºñÁ¤±ÔÀÔ·Â.
ºñÁ¤±ÔÀÔ·Â ¸ðµå¿¡¼, ERASE ¿Í KILL °ú °°Àº Ưº° ÆíÁý ¹®ÀÚµéÀ» ¹«½ÃµÈ´Ù. ÀÔ·Â ÆíÁýÀ» À§ÇØ »ç¿ëÀÚ¿¡°Ô ºÎ¿©µÈ ½Ã½ºÅÛ µµ±¸µéÀÌ ºñÁ¤±ÔÀÔ·Â ¸ðµå¿¡¼´Â ºÒ°¡´ÉÇÏ°Ô µÈ´Ù. ±×·¡¼ ¸ðµç ÀÔ·Â ¹® ÀÚµé( ¸¸¾à ±×µéÀÌ ½ÅÈ£³ª È帧Á¦¾î ¸ñÀûÀ» °¡Áø °ÍÀÌ ¾Æ´Ï¶ó¸é)Àº ÀÀ¿ë ÇÁ·Î±×·¥¿¡ Á¤È®ÀÌ Ä£´ë·Î (typed) ÀνĵȴÙ. ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ »ç¿ëÀÚ¿¡°Ô ÀÔ·ÂÀ» ÆíÁýÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÏ´Â °ÍÀÌ ÁÁ´Ù.
ºñÁ¤±ÔÀÔ·Â ¸ðµå´Â À¯¿ëÇÑ ÀÔ·ÂÀÌ ÀÖÀ»¶§±îÁö ±â´Ù¸± °ÍÀÎÁö¿Í ¾ó¸¶³ª ±â´Ù¸±°ÍÀÎÁö¸¦ Á¦¾îÇϱâ À§ÇÑ MIN °ú TIME À̶ó ºÒ¸®´Â ÆÄ¶ó¹ÌÅͰ¡ ÀÖ´Ù. ´ç½ÅÀº À¯¿ëÇÑ ÀÔ·ÂÀÌ ÀÖÀ» ¶§, ¶Ç´Â ¾øÀ» ¶§, Áï½Ã ¸®Åϵǵµ·Ï ÇØ¼ ¹«ÀÛÁ¤ ±â´Ù¸®´Â°ÉÀ» ÇÇÇϴµ¥µµ ±×µéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
MIN °ú TIMEÀº ±¸Á¶Ã¼ struct termios ÀÇ ¸â¹öÀÎ c_cc ¹è¿ÀÇ ¿ä¼Ò·Î¼ ÀúÀåµÇ¾îÁø´Ù. ÀÌ ¹è¿ ÀÇ °¢ ¿ä¼Ò´Â Ưº°ÇÑ ±ÔÄ¢À» °¡Áö°í ÀÖ°í, °¢ ¿ä¼Ò´Â ±× ¿ä¼ÒÀÇ À妽º·Î ´ëÇ¥µÇ´Â ½Éº¼ »ó¼ö¸¦ °¡ Áö°í ÀÖ´Ù. VMIN °ú VMAX´Â MIN°ú TIME ½½·ÔÀÇ ¹è¿ÀÇ À妽ºµéÀ» À§ÇÑ À̸§µéÀÌ´Ù.
¸ÅÅ©·Î : int VMIN
À̰ÍÀº c_cc ¹è¿¾ÈÀÇ MIN ½½·ÔÀ» À§ÇÑ Ã·ÀÚÀÌ´Ù. ±×·¡¼ termios.c_cc[VMIN]Àº ±×°ª ÀÚüÀÌ´Ù. MIN ½½·ÔÀº ºñÁ¤±ÔÀÔ·Â ¸ðµå¿¡¼¸¸ À¯¿ëÇÏ´Ù; read°¡ ¸®ÅϵDZâ Àü¿¡ ÀԷ ť¿¡¼ ¹Þ¾Æµé¿©¾ß¸¸ ÇÏ ´Â À¯¿ëÇÑ ¹ÙÀÌÆ®ÀÇ ÃÖ¼Ò °³¼ö¸¦ Á¤Çϴµ¥ »ç¿ëµÈ´Ù.
¸ÅÅ©·Î : int VTIME
À̰ÍÀº c_cc ¹è¿¿¡ ÀÖ´Â TIME ½½·ÔÀ» À§ÇÑ Ã·ÀÚÀÌ´Ù. ±×·¡¼, termios.c_cc[VTIME] ´Â ±× °ª ÀÚüÀÌ´Ù. TIME ½½·ÔÀº ºñÁ¤±ÔÀÔ·Â ¸ðµå¿¡¼¸¸ À¯¿ëÇÏ´Ù; ±×°ÍÀº 0.1ÃÊÀÇ ´ÜÀ§·Î ¸®ÅÏÇϱâÀü¿¡ ÀÔ ·ÂÀ» ¾ó¸¶³ª ±â´Ù¸±°ÍÀÎÁö¸¦ Á¤ÇÑ´Ù. MIN °ú TIME°ªÀº read°¡ ¸®ÅÏÇÒ¶§¸¦ À§ÇÑ Ç¥ÁØÀ» Á¤Çϴµ¥ ¿µÇâÀ» ¹ÌÄ£´Ù; ±×µéÀÇ Á¤È®ÇÑ Àǹ̴ ±×µéÀÌ °¡Áø °ª¿¡ µû¸¥´Ù(0ÀÌ³Ä 0ÀÌ ¾Æ´Ï³Ä..) 4°³ÀÇ °¡´ÉÇÑ °æ¿ì°¡ ÀÖ´Ù.
o MIN °ú TIME µÑ´Ù ¿µÀÏ ¶§...
ÀÌ °æ¿ì, read´Â Å¥¿¡ ¿äûµÈ °³¼ö¸¦ ³Ñ¾î¼´Â, À¯¿ëÇÑ ÀÔ·ÂÀÌ ÀÖÀ» ¶§ Áï½Ã ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ ¾Æ¹«·± ÀÔ·ÂÀÌ ¾ø¾îµµ Áï½Ã ¸®ÅÏÇϴµ¥, À̶§ read´Â 0ÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù.
o MIN Àº 0ÀÌÁö¸¸ TIMEÀº 0ÀÌ ¾Æ´Ò ¶§.
ÀÌ °æ¿ì, read´Â À¯¿ëÇÑ ÀÔ·ÂÀÌ µÉ¶§±îÁö TIME ½Ã°£µ¿¾È ±â´Ù¸°´Ù; ´Ü ÇÑ °³ÀÇ ¹ÙÀÌÆ®µµ ¿äûÇÑ read¸¦ ¸¸Á·½ÃŰ±â¿¡ ÃæºÐÇϰí, read´Â ¸®ÅÏÇÑ´Ù. ±×°ÍÀÌ ¸®ÅÏÇÒ ¶§ ¿äûµÈ °³¼öÀÇ À¯¿ëÇÑ ¹®ÀÚ¸¦ ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ ½Ã°£ÀÌ ´ÙÇÒ¶§±îÁö À¯¿ëÇÑ ÀÔ·ÂÀÌ ¾øÀ¸¸é read´Â 0À» ¸®ÅÏÇÑ´Ù.
o TIME ÀÌ 0ÀÌÁö¸¸ MINÀº 0ÀÌ ¾Æ´Ò ¶§.
ÀÌ °æ¿ì, read´Â Àû¾îµµ Å¥¿¡ À¯¿ëÇÑ ÀÔ·ÂÀÌ MIN ¹ÙÀÌÆ®°¡ µÉ ¶§±îÁö ±â´Ù¸°´Ù. ±× ½Ã°£µ¿¾È, read ´Â ¿äûµÈ °³¼öÀÇ À¯¿ëÇÑ ¹®ÀÚµéÀ» ¸®ÅÏÇÑ´Ù. read´Â ¸¸ÀÏ Å¥¿¡ MINº¸´Ù ´õ ¸¹Àº ¹®ÀÚ°¡ ¹ß»ýÇß´Ù ¸é MIN ¹®ÀÚº¸´Ù ´õ ¸¹Àº ¹®ÀÚ¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ´Ù.
o TIME °ú MIN µÑ´Ù ¿µÀÌ ¾Æ´Ò ¶§.
ÀÌ °æ¿ì, TIMEÀº ¸¸ÀÏ ÀÔ·ÂÀÌ µµÂøÇϸé, ±× ù ¹øÂ° µµÂøÇÑ ÀԷºÎÅÍ ¾ó¸¶µ¿¾È ±â´Ù¸±°ÍÀΰ¡¸¦ Á¤ ÇÑ´Ù. read´Â MIN ¹ÙÀÌÆ®ÀÇ ÀÔ·ÂÀÌ µµÂøÇϰųª, ¶Ç´Â TIMEÀÌ ´õ ÀÌ»ó ¾Æ¹«·± ÀԷ¾øÀÌ °æ°ú µÇ¾ú À» ¶§±îÁö ±â´Ù¸²À» À¯ÁöÇÑ´Ù. read´Â TIMEÀÌ Ã¹ ¹øÂ° ÀÔ·ÂÀÌ µµÂøÇϱâÀü¿¡ °æ°úµÇ¸é ÀԷ¾øÀÌ ¸® ÅÏÇÒ ¼ö ÀÖ´Ù. read´Â MIN º¸´Ù ´õ ¸¹Àº ÀÔ·ÂÀÌ Å¥¾È¿¡ ¹ß»ýÇÏ¸é ±×°ÍÀ» ¸®ÅÏÇÒ ¼ö ÀÖ´Ù ¸¸ÀÏ MINÀÌ 50ÀÌ°í ´ç½ÅÀÌ ´ÜÁö 10 ¹ÙÀÌÆ®¸¸ Àб⸦ ¿äûÇÏ¸é ¹«½¼ÀÏÀÌ ¹ß»ýÇÒ°ÍÀΰ¡? º¸Åë, read´Â ¹ö ÆÛ¿¡ 50¹ÙÀÌÆ®°¡ Âû¶§±îÁö ±â´Ù¸°´Ù(¶Ç´Â ´õ ÀϹÝÀûÀ¸·Î´Â, À§¿¡ ¼³¸íµÈ ±â´Ù¸²ÀÇ »óȲÀÌ ¸¸Á·µÈ´Ù.), ±×¸®°í³ª¼, ±×µéÁß 10°³¸¦ Àаí, ³ª¸ÓÁö ¹öÆÛ¿¡ ÀÖ´Â 40°³´Â readÀÇ ¿¬¼ÓÀû È£Ãâ¿¡¼ »ç¿ëÇϱâ À§ÇØ ¼ ¿î¿µÃ¼Á¦¾È¿¡ ³²°ÜµÐ´Ù.
À̽ļº ³ëÆ®: ¾î¶² ½Ã½ºÅÛ¿¡¼, MIN °ú TIME ½½·ÔÀº ½ÇÁ¦·Î EOF ¿Í EOL ½½·Ô°ú °°´Ù. MIN °ú TIMEÀº ºñÁ¤±Ô ÀԷ¿¡¼¸¸ »ç¿ëµÇ°í, EOF¿Í EOLÀº Á¤±ÔÀԷ¿¡¼¸¸ »ç¿ëµÇ±â ¶§¹®¿¡ ½É°¢ÇÑ ¹®Á¦´Â ¾øÁö¸¸, ¿ÏÀüÇÑ °ÍÀº ¾Æ´Ï´Ù. GNU ¶óÀ̺귯¸®´Â ÀÌ·¸°Ô »ç¿ëÇϱâ À§Çؼ ½½·ÔµéÀ» ºÐ¸®Çؼ ÇÒ´ç ÇÑ´Ù.
12.5 ¶óÀÎ Á¦¾î ÇÔ¼öµé.
À̵é ÇÔ¼öµéÀº Å͹̳¯ µð¹ÙÀ̽º»ó¿¡¼ °®°¡Áö Á¦¾î µ¿ÀÛÀ» ¼öÇàÇÑ´Ù. Å͹̳¯ ¾ï¼¼½º¿¡ °üÇÏ¿©, ±×µé Àº Ãâ·ÂÀ» Çϴ°Íó·³ Ãë±ÞµÈ´Ù: ¸¸ÀÏ ±×µé ÇÔ¼öÁß ¾î¶² °ÍÀÌ Å͹̳¯À» Á¦¾îÁßÀÎ ¹è°æ ÇÁ·Î¼¼½º¿¡ ¼ »ç¿ëµÈ´Ù¸é, º¸Åë, ÇÁ·Î¼¼½º ±×·ìÀÇ ¸ðµç ÇÁ·Î¼¼½ºµéÀº SIGTTOU ½ÅÈ£¸¦ ¹Þ´Â´Ù. ¿¹¿ÜÀûÀ¸·Î È£ÃâÇÑ ÇÁ·Î¼¼½º ÀÚ½ÅÀÌ ¹«½ÃµÇ°Å³ª, SIGTTOU ½ÅÈ£¿¡ ÀÇÇØ ºí·ÏµÇ¾î ÀÖ´Ù¸é, ±× °æ¿ì ¸í·ÉÀº ¼öÇà µÇ°í ¾Æ¹«·± ½ÅÈ£¸¦ ¹ÞÁö¾Ê´Â´Ù. 24Àå [JobControl] 335 ÆäÀÌÁö ÂüÁ¶.
ÇÔ¼ö : int tcsendbreak( int filedes, int duration)
ÀÌ ÇÔ¼ö´Â ÆÄÀÏ ±â¼úÀÚ filedes¿Í ¿¬°üµÈ Å͹̳¯¿¡ 0 ºñÆ®ÀÇ ½ºÆ®¸²À» Àü¼ÛÇÔÀ¸·Î½á ¸ØÃã(break) »ó ȲÀ» ¹ß»ý½ÃŲ´Ù. ¸ØÃãÀÇ Á¸¼Ó½Ã°£Àº durationÀμö¿¡ ÀÇÇØ Á¦¾îµÈ´Ù. ¸¸ÀÏ duration ÀÌ 0À̸é, Á¸ ¼Ó½Ã°£Àº 0.25 ¿Í 0.5ÃÊ »çÀÌÀÌ´Ù. 0ÀÌ ¾Æ´Ñ°ªÀÇ Àǹ̴ ¿î¿µÃ¼Á¦¿¡ ÀÇÁ¸µÈ´Ù. ÀÌ ÇÔ¼ö´Â ¸¸ÀÏ ±× Å͹̳¯ÀÌ ºñµ¿±âÀû Á÷·Ä µ¥ÀÌÅÍ Æ÷Æ®°¡ ¾Æ´Ï¸é ¾Æ¹«Àϵµ ÇÏÁö ¾Ê´Â´Ù. ¸®ÅϰªÀº º¸Åë 0À̰í, ¿¡·¯°¡ ¹ß»ýÇϸé -1À» ¸®ÅÏÇÑ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
EBADF filedes °¡ À¯¿ëÇÑ ÆÄÀÏ ±â¼úÀÚ°¡ ¾Æ´Ï´Ù.
ENOTTY filedes °¡ Å͹̳¯ µð¹ÙÀ̽º¿Í ¿¬°üÀÌ ¾ø´Ù.
ÇÔ¼ö : int tcdrain (int filedes)
tcdrain ÇÔ¼ö´Â Å¥¿¡ ÀúÀåµÈ ¸ðµç Ãâ·ÂÀÌ Å͹̳¯ filedes¿¡ ¸ðµÎ Àü¼ÛµÇ¾î Áú¶§±îÁö ±â´Ù¸°´Ù. ¸®ÅÏ °ªÀº º¸Åë 0À̰í, ¿¡·¯°¡ ¹ß»ýÇϸé -1À» ¸®ÅÏÇÑ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯»óȲ ÀÌ´Ù.
EBADF filedes °¡ À¯¿ëÇÑ ÆÄÀÏ ±â¼úÀÚ°¡ ¾Æ´Ï´Ù.
ENOTTY filedes´Â Å͹̳¯ µð¹ÙÀ̽º¿Í ¿¬°üÀÌ ¾ø´Ù.
EINTR ±× ¸í·ÉÀº ½ÅÈ£¿¡ ÀÇÇØ ÀÎÅÍ·´Æ®µÇ¾îÁ³´Ù.
21.5Àý [Interrupter Primitives], 293 ÆäÀÌÁöÂüÁ¶.
ÇÔ¼ö : int tcflush (int filedes, int queue)
tcflush ÇÔ¼ö´Â Å͹̳¯ ÆÄÀÏ filedes¿Í ¿¬°üµÈ ÀÔ·Â ±×¸®°í/¶Ç´Â Ãâ·ÂÅ¥¸¦ ¼Ò°ÅÇϱâÀ§ÇØ »ç¿ëµÈ´Ù. queue Àμö´Â ¼Ò°ÅÇÒ Å¥¸¦ Á¤Çϰí, ´ÙÀ½°ªµéÁß Çϳª¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
TCIFLUSH
¹Þ¾ÒÁö¸¸, ¾ÆÁ÷ ÀÐÁö¾ÊÀº ÀÔ·Â µ¥ÀÌÅ͸¦ ¼Ò°ÅÇ϶ó
TCOFLUSH
¾²¿©Á³Áö¸¸, ¾ÆÁ÷ Àü¼ÛµÇÁö ¾ÊÀº Ãâ·Âµ¥ÀÌŸ¸¦ ¼Ò°ÅÇ϶ó.
TCIOFLUSH
Å¥¿¡ ÀúÀåµÈ ÀԷ°ú Ãâ·ÂÀ» ¸ðµÎ ¼Ò°ÅÇ϶ó. ¸®ÅϰªÀº º¸Åë 0ÀÌ°í ¿¡·¯°¡ ¹ß»ýÇϸé -1À» ¸®ÅÏÇÑ´Ù. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯»óȲÀÌ´Ù.
EBADF
filedes°¡ À¯¿ëÇÑ ÆÄÀÏ ±â¼úÀÚ°¡ ¾Æ´Ï´Ù.
ENOTTY
filedes´Â Å͹̳¯ µð¹ÙÀ̽º¿Í ¿¬°üÀÌ ¾ø´Ù.
EINVAL
Àû´çÇÏÁö ¸øÇÑ °ªÀÌ queueÀμö·Î½á °ø±ÞµÇ¾ú´Ù. ÀÌ ÇÔ¼öÀÇ À̸§ÀÌ tcflush ¶ó°í Áö¾îÁø °ÍÀº À¯°¨½º ·¯¿îµ¥, ¿Ö³ÄÇϸé ÇÑÁ¤ "flush"´Â º¸Åë ¸ðµç Ãâ·ÂÀÌ Àü¼ÛµÇ°í, ´Ù¸¥ ¸í·ÉÀ» »ç¿ëÇϱâ Àü¿¡ È¥µ¿µÉ ÀÔ ·ÂÀ̳ª Ãâ·ÂÀ» ¹ö¸®´Âµ¥ »ç¿ëµÈ´Ù. À¯°¨½º·´°Ôµµ, tcflush´Â POSIX·ÎºÎÅÍ À¯·¡µÆ°í, ¿ì¸®´Â ±×°ÍÀ» º¯°æÇÒ ¼ö ¾ø´Ù.
ÇÔ¼ö : int tcflow (int filedes,int action)
tcflow ÇÔ¼ö´Â filedes·Î Á¤ÇØÁø Å͹̳¯ ÆÄÀÏ¿¡¼ XON/XOFF È帧Á¦¾î¿¡ ÇØ´çÇÏ´Â ¸í·ÉÀ» ¼öÇàÇÏ ±â À§ÇØ »ç¿ëµÈ´Ù. actionÀμö´Â ¹«½¼ ¸í·ÉÀ» ¼öÇàÇÒ°ÍÀÎÁö¸¦ Á¤Çϰí, ´Ù¸§°ªµéÁß Çϳª¸¦ °¡Áú¼ö ÀÖ ´Ù.
TCOOFF Ãâ·ÂÀÇ Àü¼ÛÀ» Áß´ÜÇ϶ó.
TCOON Ãâ·ÂÀÇ Àü¼ÛÀ» Àç½ÃÀÛÇ϶ó.
TCIOFF STOP ¹®ÀÚ¸¦ Àü¼ÛÇ϶ó.
TCION START ¹®ÀÚ¸¦ Àü¼ÛÇ϶ó.
STOP ¿Í START¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸¸¦ 12.4.9Àý [Special Characters] 195 ÆäÀÌÁö¸¦ ÂüÁ¶Ç϶ó. ¸®ÅϰªÀº º¸Åë 0ÀÌ°í ¿¡·¯°¡ ¹ß»ýÇϸé -1ÀÌ ¸®ÅϵȴÙ. ´ÙÀ½ÀÇ errno´Â ÀÌ ÇÔ¼ö¸¦ À§ÇØ Á¤ÀÇµÈ ¿¡·¯ »óȲÀÌ´Ù.
EBADF filedes °¡ À¯¿ëÇÑ ÆÄÀÏ ±â¼úÀÚ°¡ ¾Æ´Ï´Ù.
ENOTTY filedes °¡ Å͹̳¯ µð¹ÙÀ̽º¿Í ¿¬°üÀÌ ¾ø´Ù.
EINVAL Àû´çÇÏÁö ¸øÇÑ °ªÀÌ actionÀμö·Î ÁÖ¾îÁ³´Ù.
12.6 ºñÁ¤±Ô ¸ðµåÀÇ ¿¹.
À̰÷ÀÇ ¿¹´Â ºñÁ¤±ÔÀԷ¸ðµå¿¡¼ ¹ÝÇâ¾øÀÌ ´ÜÀÏ ¹®ÀÚµéÀ» Àбâ À§Çؼ Å͹̳¯ µð¹ÙÀ̽º¸¦ ¾î¶»°Ô ¸ÂÃâ°ÍÀÎÁö¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
/* ¿ø·¡ÀÇ Å͹̳¯ ¼Ó¼ºµéÀ» ±â¾ïÇϱâ À§Çؼ ÀÌ º¯¼ö¸¦ »ç¿ëÇ϶ó
*/
struct termios saved_attributes;
void
reset_input_mode (void)
{
tcsetattr (STDIN_FILENO, TCSANOW, &saved_attributes);
}
void
set_input_mode (void)
{
struct termios tattr;
char *name;
/* stdinÀÌ Å͹̳¯ÀÎÁö È®ÀÎÇ϶ó */
if (!isatty (STDIN_FILENO))
{
fprintf (stderr, "Not a terminal.\n");
exit (EXIT_FAILURE);
}
/* ±×µéÀ» ³ªÁß¿¡ ÀçÀúÀå ÇÒ ¼ö ÀÖµµ·Ï Å͹̳¯ ¼Ó¼ºµéÀ» ÀúÀåÇ϶ó. */
tcgetattr (STDIN_FILENO, &saved_attributes);
atexit (reset_input_mode);
/* Àç¹ÌÀÖ´Â(?) Å͹̳¯ ¸ðµå¸¦ ¼³Á¤Ç϶ó. */
tcgetattr (STDIN_FILENO, &tattr);
tattr.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */
tattr.c_cc[VMIN] = 1;
tattr.c_cc[VTIME] = 0;
tcsetattr (STDIN_FILENO, TCSAFLUSH, &tattr);
}
int
main (void)
{
char c;
set_input_mode ();
while (1)
{
read (STDIN_FILENO, &c, 1);
if (c == '\004') /* C-d */
break;
else
putchar (c);
}
return EXIT_SUCCESS;
}
ÀÌ ÇÁ·Î±×·¥Àº ½ÅÈ£¿Í ÇÔ²² ºüÁ®³ª°¡°Å³ª Á¾·áµÇ±â Àü¿¡ ¿ø·¡ÀÇ Å͹̳Π¸ðµå¸¦ ÀçÀúÀåÇϵµ·Ï ÁÖ ÀǸ¦ ±â¿ï¿©¾ß ÇÑ´Ù. À̰ÍÀ» È®½ÇÇÏ°Ô Çϱâ À§Çؼ´Â atexit ÇÔ¼ö¸¦( 22.3.3Àý [Cleanups on Exit] 321 ÆäÀÌÁö ÂüÁ¶.) »ç¿ëÇ϶ó. ½©Àº ÇÑ ÇÁ·Î¼¼½º°¡ ¸ØÃ߰ųª Áö¼ÓµÉ ¶§ Å͹̳¯ ¸ðµåÀÇ Àç¼³Á¤¿¡ Á¶½É ÇÑ´Ù; 24Àå [Job Control] 335 ÆäÀÌÁö ÂüÁ¶. ±×·¯³ª ¾î¶² ½©µéÀº ½ÇÁ¦·Î À̰ÍÀ» ÇÏÁö ¾Ê´Â´Ù, ±×·¡ ¼ ´ç½ÅÀº Å͹̳¯ ¸ðµå¸¦ Àç¼³Á¤ÇÏ´Â ÀÛ¾÷ Á¦¾î ½ÅÈ£¸¦ À§ÇÑ Çڵ鷯¸¦ ¸¸µé¾î¾ß ÇÒ °ÍÀÌ´Ù. À§ÀÇ ¿¹ ´Â ±×·¸°Ô ÇÑ´Ù.