pty ��ĥ�⥸�塼�� version 0.3 by A.ito 1. �Ϥ���� ���γ�ĥ�⥸�塼��ϡ�����tty (pty) ���̤���Ŭ���ʥ��ޥ�ɤ� �¹Ԥ��뵡ǽ�� ruby ���󶡤��ޤ��� 2. ���󥹥ȡ��� ���Τ褦�ˤ��ƥ��󥹥ȡ��뤷�Ƥ��������� (1) ruby extconf.rb ��¹Ԥ���� Makefile ����������ޤ��� (2) make; make install ��¹Ԥ��Ƥ��������� 3. �����Ǥ��뤫 ���γ�ĥ�⥸�塼��ϡ�PTY �Ȥ����⥸�塼���������ޤ��������� �ˤϡ����Τ褦�ʥ⥸�塼��ؿ����ޤޤ�Ƥ��ޤ��� getpty(command) spawn(command) ���δؿ��ϡ�����tty����ݤ������ꤵ�줿���ޥ�ɤ򤽤β���tty �θ������Ǽ¹Ԥ���������֤��ޤ�������ͤ�3�Ĥ����Ǥ���ʤ� ����Ǥ����ǽ�����Ǥϲ���tty�����ɤ߽Ф������IO���֥������ȡ� 2���ܤϽ񤭤��ि���IO���֥������ȡ�3���ܤϻҥץ������Υץ� ����ID�Ǥ������δؿ������ƥ졼���Ȥ��ƸƤФ줿��硤������ ���Ǥϥ֥��å��ѥ�᡼���Ȥ����Ϥ��졤�ؿ����Τ�nil���֤��ޤ��� ���δؿ��ˤ�äƺ��줿���֥ץ�������ư���Ƥ���֡��ҥץ����� �ξ��֤�ƻ뤹�뤿��� SIGCHLD �����ʥ����ª���ޤ����ҥץ����� ����λ��������ߤ������ˤϡ��㳰��ȯ�����ޤ������δ֡����٤Ƥ� SIGCHLD �� PTY �⥸�塼��Υ����ʥ�ϥ�ɥ����ª�����Τǡ� ���֥ץ���������������¾�δؿ�(system() �Ȥ� IO.popen()�ʤ�)�� �Ȥ��ȡ�ͽ�����ʤ��㳰��ȯ�����뤳�Ȥ�����ޤ���������ɤ����� �ˤϡ�������protect_signal()�򻲾Ȥ��Ƥ��������� ���δؿ����֥��å��ѥ�᡼���դ��ǸƤФ줿���ˤϡ����Υ֥��å� ����ǤΤ� SIGCHLD ����ª����ޤ����������äơ��֥��å��ѥ�᡼�� �Ȥ����Ϥ��줿IO���֥������Ȥ򡤥֥��å��γ��˻����Ф��ƻȤ��� �ϴ�����ޤ��� protect_signal ���δؿ��ϥ��ƥ졼���Ǥ��������ǻ��ꤵ�줿�֥��å�����Ǥϡ� �ҥץ���������λ���Ƥ��㳰��ȯ�����ޤ��󡥤��δؿ���Ȥ����Ȥǡ� PTY�λҥץ�������ư���Ƥ���֤Ǥ⡤system()�� IO.popen()�ʤɤ� �ؿ�������˻Ȥ����Ȥ��Ǥ��ޤ����㤨�С� PTY.spawn("command_foo") do |r,w| ... ... PTY.protect_signal do system "some other commands" end ... end ���Τ褦�ʵ��Ҥˤ�ꡤ"some other commands" ����λ�����Ȥ��� �㳰��ȯ������Τ��ɤ��ޤ��� reset_signal PTY �λҥץ�������ư���Ƥ��Ƥ⡤���Υץ������ν�λ�����㳰��ȯ�� ���ʤ��褦�ˤ��ޤ��� 4. ���ѤˤĤ��� ��ƣ��§���������ͭ���ޤ��� �������ץ������ޤ��ϥɥ�����Ȥ˸������ɽ�������Ѥ��줺�� ɽ������Ƥ�����˸¤ꡤï�Ǥ⡤���Υ��եȥ�������̵���������� ���Ԥ�̵�Ǥ����ѡ����ۡ����ѤǤ��ޤ���������Ū�ϸ��ꤵ��Ƥ��ޤ� �� ���Υץ����������ѡ����ۤ���¾���Υץ������˴ط�����԰٤ˤ� �ä������������ʤ�»�����Ф��Ƥ⡤��Ԥϰ�����Ǥ���餤�ޤ��� 5. �Х������ �Х���ݡ��Ȥϴ��ޤ��ޤ��� aito@ei5sun.yz.yamagata-u.ac.jp �ޤ��Żҥ᡼��ǥХ���ݡ��Ȥ����꤯��������