pty

Autres langues

Langue: ja

Version: 2005-10-10 (openSuse - 09/10/07)

Section: 7 (Divers)

̾Á°

pty - µ¼»÷üËö¥¤¥ó¥¿¥Õ¥§¡¼¥¹

ÀâÌÀ

µ¼»÷üËö (pseudo-terminal) ¤Ï¡¢ÁÐÊý¸þÄÌ¿®¥Á¥ã¥ó¥Í¥ë¤òÄ󶡤¹¤ë ²¾ÁÛ¥­¥ã¥é¥¯¥¿¥Ç¥Ð¥¤¥¹¤Î¥Ú¥¢¤Ç¤¢¤ë¡£ ¥Á¥ã¥ó¥Í¥ë¤Î°ìÊý¤ÎüÅÀ¤Ï ¥Þ¥¹¥¿ (master) ¤È¸Æ¤Ð¤ì¡¢¤â¤¦°ìÊý¤ÎüÅÀ¤Ï ¥¹¥ì¡¼¥Ö (slave) ¤È¸Æ¤Ð¤ì¤ë¡£ µ¼»÷üËö¤Î¥¹¥ì¡¼¥Ö¤Ï¡¢ÅÁÅýŪ¤ÊüËö¤ÈÁ´¤¯Æ±¤¸Æ°ºî¤ò¤¹¤ë¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò Ä󶡤¹¤ë¡£Ã¼Ëö¤ËÀܳ¤µ¤ì¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ë¥×¥í¥»¥¹¤Ïµ¼»÷üËö¤Î ¥¹¥ì¡¼¥Ö¤ò¥ª¡¼¥×¥ó¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢¤½¤ì°Ê¹ß¤Ï¥Þ¥¹¥¿Â¦¤ò¥ª¡¼¥×¥ó ¤·¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤«¤é¤½¤Î¥×¥í¥»¥¹¤òÀ©¸æ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ üËö¤ÇÆþÎϤµ¤ì¤¿¤Î¤ÈƱ¤¸¤è¤¦¤Ë¡¢ ¥Þ¥¹¥¿Â¦¤Ë½ñ¤­¹þ¤Þ¤ì¤¿Á´¤Æ¤Î¥Ç¡¼¥¿¤Ï¡¢¥¹¥ì¡¼¥Ö¦¤Î¥×¥í¥»¥¹¤ËÁ÷¤é¤ì¤ë¡£ Î㤨¤Ð¡¢¥Þ¥¹¥¿¥Ç¥Ð¥¤¥¹¤Ë³ä¤ê¹þ¤ß¥­¥ã¥é¥¯¥¿ (Ä̾ï¤Ï control-C) ¤ò½ñ¤­¹þ¤à¤È¡¢ ¥¹¥ì¡¼¥Ö¤ËÀܳ¤µ¤ì¤Æ¤¤¤ë¥Õ¥©¥¢¥°¥é¥¦¥ó¥É¡¦¥×¥í¥»¥¹¥°¥ë¡¼¥×¤ËÂФ·¤Æ ³ä¤ê¹þ¤ß¥·¥°¥Ê¥ë (SIGINT) ¤¬À¸À®¤µ¤ì¤ë¡£ È¿ÂФˡ¢µ¼»÷üËö¤Î¥¹¥ì¡¼¥Ö¦¤Ë½ñ¤­¹þ¤Þ¤ì¤¿Á´¤Æ¤Î¥Ç¡¼¥¿¤Ï¡¢ ¥Þ¥¹¥¿Â¦¤ËÀܳ¤µ¤ì¤Æ¤¤¤ë¥×¥í¥»¥¹¤«¤éÆɤ߽Ф¹¤³¤È¤¬¤Ç¤­¤ë¡£ µ¼»÷üËö¤Ï¡¢¥Í¥Ã¥È¥ï¡¼¥¯¥í¥°¥¤¥ó¥µ¡¼¥Ó¥¹ (ssh(1), rlogin(1), telnet(1)) ¤äüËö¥¨¥ß¥å¥ì¡¼¥¿¡¢ script(1), screen(1), expect(1) ¤Ê¤É¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ë¡£

Îò»ËŪ¤Ë¸«¤ë¤È BSD ¤È System V ¤Î2¼ïÎà¤Îµ¼»÷üËö¤Î API ¤¬È¯Å¸¤·¤Æ¤­¤Æ¤¤¤ë¡£ SUSv1 ¤Ï System V API ¤Ë´ð¤Å¤¤¤¿µ¼»÷üËö API ¤òɸ½à²½¤·¤Æ¤ª¤ê¡¢ µ¼»÷üËö¤ò»ÈÍѤ¹¤ë¿·¤·¤¤¥×¥í¥°¥é¥à¤Ï¤¹¤Ù¤Æ¤³¤Î API ¤òºÎÍѤ¹¤Ù¤­¤Ç¤¢¤ë¡£

Linux ¤Ç¤Ï BSD É÷¤È (ɸ½à²½¤µ¤ì¤¿) System V É÷¤Îµ¼»÷üËö¤òÄ󶡤·¤Æ¤¤¤ë¡£ System V É÷¤ÎüËö¤Ï¡¢Linux ¥·¥¹¥Æ¥à¤Ç¤Ï°ìÈÌ¤Ë Unix 98 µ¼»÷üËö¤È¸Æ¤Ð¤ì¤Æ¤¤¤ë¡£ ¥«¡¼¥Í¥ë 2.6.4 °Ê¹ß¤Ç¤Ï¡¢BSD É÷¤Îµ¼»÷üËö¤ÏÇÑ»ßͽÄê¤È¤ß¤Ê¤µ¤ì¤Æ¤¤¤ë (¥«¡¼¥Í¥ë¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¤Ç BSD É÷¤Îµ¼»÷üËö¤ò̵¸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë)¡£ ¿·¤·¤¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢Unix 98 µ¼»÷üËö¤ò»ÈÍѤ¹¤Ù¤­¤Ç¤¢¤ë¡£

Unix 98 µ¼»÷üËö

̤»ÈÍѤΠUnix 98 µ¼»÷üËö¥Þ¥¹¥¿¤ò¥ª¡¼¥×¥ó¤¹¤ë¤Ë¤Ï posix_openpt(3) ¤ò¸Æ¤Ó½Ð¤¹ (¤³¤Î´Ø¿ô¤Ï¥Þ¥¹¥¿¡¦¥¯¥í¡¼¥ó¡¦¥Ç¥Ð¥¤¥¹ (master clone device), /dev/ptmx ¤ò¥ª¡¼¥×¥ó¤¹¤ë; pts(4) ¤ò»²¾È)¡£ ¥×¥í¥°¥é¥à¸ÇÍ­¤Î½é´ü²½½èÍý¤ò¼Â¹Ô¤·¡¢ grantpt(3) ¤ò»È¤Ã¤Æ¥¹¥ì¡¼¥Ö¥Ç¥Ð¥¤¥¹¤Î½êÍ­¸¢¤äµö²Ä¤òÊѹ¹¤·¡¢ unlockpt(3) ¤ò»È¤Ã¤Æ¥¹¥ì¡¼¥Ö¤Î¥í¥Ã¥¯²ò½ü¤ò¹Ô¤¦¤È¡¢ ptsname(3) ¤¬ÊÖ¤¹Ì¾Á°¤òÅϤ·¤Æ open(2) ¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤ê Âбþ¤¹¤ë¥¹¥ì¡¼¥Ö¥Ç¥Ð¥¤¥¹¤ò¥ª¡¼¥×¥ó¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¡£

Linux ¥«¡¼¥Í¥ë¤Ç¤Ï¡¢ÍøÍѤǤ­¤ë Unix 98 µ¼»÷üËö¤Î¿ô¤Ë¾å¸Â¤òÀߤ±¤Æ¤¤¤ë¡£ 2.6.3 °ÊÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢¤³¤Î¾å¸Â¤Ï¥«¡¼¥Í¥ë¤Î¥³¥ó¥Ñ¥¤¥ë»þ¤ÎÀßÄê (CONFIG_UNIX98_PTYS) ¤Ç¤¢¤ë¡£µö²Ä¤µ¤ì¤ëµ¼»÷üËö¤Î¿ô¤ÏºÇÂç 2048 ¤Ç¤¢¤ê¡¢ ¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄê¤Ï 256 ¤Ç¤¢¤ë¡£ ¥«¡¼¥Í¥ë 2.6.4 °Ê¹ß¤Ç¤Ï¡¢¤³¤Î¾å¸Â¤Ï /proc/sys/kernel/pty/max ·Ðͳ¤ÇưŪ¤ËÄ´À°²Äǽ¤È¤Ê¤Ã¤Æ¤¤¤ë¡£¤Þ¤¿¡¢ /proc/sys/kernel/pty/nr ¤Ç¸½ºß»ÈÍÑÃæ¤Îµ¼»÷üËö¤Î¿ô¤ò¼èÆÀ¤Ç¤­¤ë¡£ ¤³¤Î 2¤Ä¤Î¥Õ¥¡¥¤¥ë¤Î¾ÜºÙ¤Ï proc(5) ¤ò»²¾È¡£

BSD µ¼»÷üËö

BSD É÷¤Îµ¼»÷üËö¤Ï¤¢¤é¤«¤¸¤áºîÀ®¤µ¤ì¤¿¥Ú¥¢¤È¤·¤ÆÄ󶡤µ¤ì¤ë¡£¤½¤Î̾Á°¤Ï /dev/ptyXY (¥Þ¥¹¥¿Â¦)¡¢ /dev/ttyXY (¥¹¥ì¡¼¥Ö¦) ¤Ç¤¢¤ë¡£¤³¤³¤Ç¡¢ X ¤Ï [p-za-e] ¤Î 16ʸ»ú¤Î¤¦¤Á¤Î°ìʸ»ú¡¢ Y ¤Ï [0-9a-f] ¤Î 16ʸ»ú¤Î¤¦¤Á¤Î°ìʸ»ú¤Ç¤¢¤ë (X, Y ¤Ë»È¤ï¤ì¤ëʸ»ú¤ÎÀµ³Î¤ÊÈÏ°Ï¤Ï Unix ¤Î¼ÂÁõ¤Ë¤è¤ê°Û¤Ê¤ë)¡£ Î㤨¤Ð¡¢ /dev/ptyp1 ¤È /dev/ttyp1 ¤Ï BSD µ¼»÷üËö¥Ú¥¢¤ò¹½À®¤¹¤ë¡£ ¥×¥í¥»¥¹¤¬Ì¤»ÈÍѤε¼»÷üËö¥Ú¥¢¤ò¸«¤Ä¤±¤ë¤Ë¤Ï¡¢ ³Æµ¼»÷üËö¤Î¥Þ¥¹¥¿¤Î open(2) ¤ò»î¤ß¡¢open ¤¬À®¸ù¤¹¤ë¤Þ¤Ç¤³¤ì¤ò·«¤êÊÖ¤¹¡£ ¥Þ¥¹¥¿¤ò open ¤¹¤ë¤È¡¢Âбþ¤¹¤ëµ¼»÷üËö¤Î¥¹¥ì¡¼¥Ö¤â open ¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë (¥¹¥ì¡¼¥Ö¤Î̾Á°¤Ï¡¢¥Þ¥¹¥¿¤Î̾Á°¤Î "pty" ¤ò "tty" ¤ËÃÖ¤­´¹¤¨¤¿¤â¤Î¤Ç¤¢¤ë)¡£

¥Õ¥¡¥¤¥ë

/dev/ptmx (Unix 98 ¥Þ¥¹¥¿¡¦¥¯¥í¡¼¥ó¡¦¥Ç¥Ð¥¤¥¹)
/dev/pts/* (Unix 98 ¥¹¥ì¡¼¥Ö¥Ç¥Ð¥¤¥¹)
/dev/pty[p-za-e][0-9a-f] (BSD ¥Þ¥¹¥¿¥Ç¥Ð¥¤¥¹)
/dev/tty[p-za-e][0-9a-f] (BSD ¥¹¥ì¡¼¥Ö¥Ç¥Ð¥¤¥¹)  

Ãí°Õ

¥Ñ¥±¥Ã¥È¡¦¥â¡¼¥ÉÁàºî¤ÎÀ©¸æ¤ò¹Ô¤¦ TIOCPKT ioctl(2) ¤ÎÀâÌÀ¤Ï tty_ioctl(4) ¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¡£

BSD ioctl(2) ¤Î TIOCSTOP, TIOCSTART, TIOCUCNTL, TIOCREMOTE ¤Ï ¤³¤ì¤Þ¤Ç¤Î¤È¤³¤í Linux ¤Ç¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£

´ØÏ¢¹àÌÜ

select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4), tty_ioctl(4)