[ruby-list:50818] Rubyとファイルディスクリプタの継承について

From: MASAKI Haruka <yek@...>
Date: 2019-09-12 13:29:45 UTC
List: ruby-list #50818
=E6=AD=A3=E6=9C=A8=E3=81=A7=E3=81=99=E3=80=82

Ruby=E3=81=AB=E3=81=8A=E3=81=84=E3=81=A6=E7=8A=B6=E6=B3=81=E3=81=AB=E3=82=
=88=E3=81=A3=E3=81=A6=E5=AD=90=E3=83=97=E3=83=AD=E3=82=BB=E3=82=B9=E3=81=AB=
=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=83=87=E3=82=A3=E3=82=B9=E3=82=AF=E3=
=83=AA=E3=83=97=E3=82=BF=E3=81=8C=E5=BC=95=E3=81=8D=E7=B6=99=E3=81=8C=E3=82=
=8C=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=82=8A=E3=80=81
EOF=E3=81=AB=E9=81=94=E3=81=97=E3=81=9F=E7=8A=B6=E6=85=8B=E3=81=A7=E5=BC=95=
=E3=81=8D=E6=B8=A1=E3=81=95=E3=82=8C=E3=81=9F=E3=82=8A=E3=81=97=E3=81=A6=E3=
=81=84=E3=82=8B=E3=80=81
=E3=81=A8=E3=81=84=E3=81=86=E3=81=93=E3=81=A8=E3=81=AA=E3=81=AE=E3=81=A7=E3=
=81=99=E3=81=8C=E3=80=81perl=E5=8F=8A=E3=81=B3python=E3=81=A7=E3=82=82=E5=
=90=8C=E6=A7=98=E3=81=AE=E7=8A=B6=E6=B3=81=E3=82=92=E7=A2=BA=E8=AA=8D=E3=81=
=97=E3=81=A6=E3=81=84=E3=82=8B=E3=81=9F=E3=82=81=E3=80=81Ruby=E5=9B=BA=E6=
=9C=89=E3=81=A7=E3=81=AF=E3=81=AA=E3=81=84=E3=81=8B=E3=82=82=E3=81=97=E3=82=
=8C=E3=81=BE=E3=81=9B=E3=82=93=E3=80=82
=E3=81=97=E3=81=8B=E3=81=97=E3=80=81=E8=AA=BF=E3=81=B9=E3=81=A6=E3=81=BF=E3=
=81=A6=E3=82=82=E3=81=A9=E3=81=86=E3=81=AB=E3=82=82=E8=87=AA=E5=B7=B1=E8=A7=
=A3=E6=B1=BA=E3=81=AB=E8=87=B3=E3=82=89=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=
=E3=81=AE=E3=81=A7=E3=81=94=E5=8A=A9=E5=8A=9B=E3=81=8A=E9=A1=98=E3=81=84=E3=
=81=97=E3=81=BE=E3=81=99=E3=80=82

=E6=AC=A1=E3=81=AE=E4=BE=8B=E3=81=A7=E3=81=AF=E5=AD=90=E3=83=97=E3=83=AD=E3=
=82=BB=E3=82=B9=E3=81=AEcat=E3=81=AB=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=
=83=87=E3=82=A3=E3=82=B9=E3=82=AF=E3=83=AA=E3=83=97=E3=82=BF=E3=81=8C=E5=BC=
=95=E3=81=8D=E6=B8=A1=E3=81=95=E3=82=8C=E3=80=81cat=E3=81=8B=E3=82=89=E4=B8=
=80=E8=A1=8C=E8=AA=AD=E3=82=81=E3=81=A6=E3=81=84=E3=81=BE=E3=81=99=E3=80=82

% ruby -e 'IO.popen(["cat"], "r") {|io| puts "#{io.gets} GET" }' -e 'p STDI=
N.eof?' -e 'puts STDIN.read' < 5LINES=20
AAA
 GET
true

=E3=81=97=E3=81=8B=E3=81=97=E3=80=81=E4=BA=8B=E5=89=8D=E3=81=ABIO#eof?=E3=
=81=99=E3=82=8B=E3=81=A8=E3=80=81cat=E3=81=AB=E3=81=AF=E3=83=95=E3=82=A1=E3=
=82=A4=E3=83=AB=E3=83=87=E3=82=A3=E3=82=B9=E3=82=AF=E3=83=AA=E3=83=97=E3=82=
=BF=E3=81=8C=E5=BC=95=E3=81=8D=E7=B6=99=E3=81=8C=E3=82=8C=E3=81=A6=E3=81=84=
=E3=81=BE=E3=81=9B=E3=82=93=E3=80=82

% ruby -e 'p STDIN.eof?' -e 'IO.popen(["cat"], "r") {|io| puts "#{io.gets} =
GET" }' -e 'p STDIN.eof?' -e 'puts STDIN.read' < 5LINES
false
 GET
false
AAA
BBB
CCC
DDD
EEE
FFF

=E6=AC=A1=E3=81=AE=E4=BE=8B=E3=81=A7=E3=81=AFruby=E3=81=AF=E4=B8=80=E8=A1=
=8C=E8=AA=AD=E3=82=93=E3=81=A7=E3=81=84=E3=82=8B=E3=81=A0=E3=81=91=E3=81=A7=
=E3=81=99=E3=81=8C=E3=80=81EOF=E3=81=BE=E3=81=A7=E9=80=B2=E3=82=93=E3=81=A7=
=E3=81=97=E3=81=BE=E3=81=84=E3=81=BE=E3=81=99=E3=80=82

% print -l A B C D E | ( ruby -e 'gets' && cat )

=E3=81=93=E3=82=8C=E3=81=AF=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=8B=E3=
=82=89=E8=AA=AD=E3=82=93=E3=81=A7=E3=82=82=E5=90=8C=E3=81=98=E3=81=A7=E3=81=
=99=E3=80=82

% ( ruby -e 'gets' && cat ) < file

=E3=81=A8=E3=81=93=E3=82=8D=E3=81=8C=E3=80=81IO#pos=E3=81=99=E3=82=8B=E3=81=
=A8cat=E3=81=AB=E3=81=AF2=E8=A1=8C=E7=9B=AE=E4=BB=A5=E9=99=8D=E3=81=8C=E6=
=B8=A1=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=AA=E3=82=8A=E3=81=BE=E3=81=
=99=E3=80=82

% ( ruby -e 'gets' -e 'STDIN.pos' && cat ) < file
B
C
D
E

exec=E3=81=97=E3=81=9F=E5=A0=B4=E5=90=88=E3=82=82=E5=90=8C=E6=A7=98=E3=81=
=A7=E6=99=AE=E9=80=9A=E3=81=AF=E3=81=8B=E3=82=89=E3=81=A3=E3=81=BD=E3=81=A7=
=E3=81=99=E3=81=8C

% ( ruby -e 'gets' -e 'exec("cat")' ) < file

IO#pos=E3=81=99=E3=82=8B=E3=81=A8cat=E3=81=AB=E6=B8=A1=E3=82=8A=E3=81=BE=E3=
=81=99=E3=80=82

% ( ruby -e 'gets' -e 'STDIN.pos' -e 'exec("cat")' ) < file
B
C
D
E

=E3=81=93=E3=82=8C=E3=81=AF=E3=81=A9=E3=81=86=E3=81=84=E3=81=A3=E3=81=9F=E3=
=81=93=E3=81=A8=E3=81=8C=E8=B5=B7=E3=81=8D=E3=81=A6=E3=81=84=E3=82=8B=E3=81=
=AE=E3=81=A7=E3=81=97=E3=82=87=E3=81=86=E3=81=8B?

In This Thread

Prev Next