blob: 5ae4fb06a055755146faa87ae34213a800363b71 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
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
�ޤ��Żҥ��ǥХ���ݡ��Ȥ����꤯��������
|