ライブラリ
- ビルトイン (415)
-
io
/ console (22) -
irb
/ context (22) -
net
/ telnet (2) - open3 (44)
- shell (24)
-
shell
/ command-processor (24) -
shell
/ filter (24) - socket (99)
- timeout (19)
クラス
-
ARGF
. class (231) - Array (19)
- IO (22)
-
IRB
:: Context (22) - Shell (24)
-
Shell
:: CommandProcessor (24) -
Shell
:: Filter (24) - Socket (99)
- String (22)
キーワード
- Rubyの起動 (11)
- Telnet (2)
- capture2e (11)
- capture3 (11)
- cat (18)
- chr (11)
- close (11)
- closed? (11)
-
each
_ char (22) -
each
_ codepoint (22) - echo? (22)
- eof (11)
- eof? (11)
- exec (55)
- file (11)
- filename (11)
- getbyte (11)
- getc (11)
- gets (33)
- glob (18)
-
inplace
_ mode (11) - irb (11)
- noecho (11)
- pack (19)
- pack テンプレート文字列 (11)
-
pack
_ sockaddr _ in (11) - path (11)
- popen3 (22)
- read (11)
- readbyte (11)
- readchar (11)
-
ruby 1
. 6 feature (11) - skip (11)
-
sockaddr
_ in (11) - socket (11)
- spawn (44)
- system (44)
-
tcp
_ server _ loop (22) - tee (18)
- timeout (19)
-
udp
_ server _ sockets (44) - unpack (11)
-
unpack
_ sockaddr _ in (11)
検索結果
先頭5件
-
Array
# pack(template , buffer: String . new) -> String (406.0) -
配列の内容を template で指定された文字列にしたがって、 バイナリとしてパックした文字列を返します。
...)
//emlist[][ruby]{
"\x01\xFE".unpack("c*") # => [1, -2]
[1, -2].pack("c*") # => "\x01\xFE"
[1, 254].pack("c*") # => "\x01\xFE"
//}
: C
unsigned char (8bit 符号なし整数)
//emlist[][ruby]{
"\x01\xFE".unpack("C*") # => [1, 254]
[1, -2].pack("C*") # => "\x01\xFE"
[1, 254].pack("C*") # =>......*") # => [513, -514]
[513, 65022].pack("s*") # => "\x01\x02\xFE\xFD"
[513, -514].pack("s*") # => "\x01\x02\xFE\xFD"
//}
ビッグエンディアン (SPARC64):
//emlist[][ruby]{
"\x01\x02\xFE\xFD".unpack("s*") # => [258, -259]
[258, 65277].pack("s*") # => "\x01\x02\xFE\xFD"
[258, -259].pack("s*......c.to_i}.pack("C4")
# => "\x7F\x00\x00\x01"
//}
: sockaddr_in 構造体
//emlist[][ruby]{
require 'socket'
[Socket::AF_INET,
Socket.getservbyname('echo'),
127, 0, 0, 1].pack("s n C4 x8")
# => "\x02\x00\x00\a\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"
//}
pack/unpack を使う代わりに... -
String
# unpack(template) -> Array (406.0) -
Array#pack で生成された文字列を テンプレート文字列 template にしたがってアンパックし、 それらの要素を含む配列を返します。
...)
//emlist[][ruby]{
"\x01\xFE".unpack("c*") # => [1, -2]
[1, -2].pack("c*") # => "\x01\xFE"
[1, 254].pack("c*") # => "\x01\xFE"
//}
: C
unsigned char (8bit 符号なし整数)
//emlist[][ruby]{
"\x01\xFE".unpack("C*") # => [1, 254]
[1, -2].pack("C*") # => "\x01\xFE"
[1, 254].pack("C*") # =>......*") # => [513, -514]
[513, 65022].pack("s*") # => "\x01\x02\xFE\xFD"
[513, -514].pack("s*") # => "\x01\x02\xFE\xFD"
//}
ビッグエンディアン (SPARC64):
//emlist[][ruby]{
"\x01\x02\xFE\xFD".unpack("s*") # => [258, -259]
[258, 65277].pack("s*") # => "\x01\x02\xFE\xFD"
[258, -259].pack("s*......c.to_i}.pack("C4")
# => "\x7F\x00\x00\x01"
//}
: sockaddr_in 構造体
//emlist[][ruby]{
require 'socket'
[Socket::AF_INET,
Socket.getservbyname('echo'),
127, 0, 0, 1].pack("s n C4 x8")
# => "\x02\x00\x00\a\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"
//}
pack/unpack を使う代わりに... -
pack テンプレート文字列 (306.0)
-
pack テンプレート文字列
...)
//emlist[][ruby]{
"\x01\xFE".unpack("c*") # => [1, -2]
[1, -2].pack("c*") # => "\x01\xFE"
[1, 254].pack("c*") # => "\x01\xFE"
//}
: C
unsigned char (8bit 符号なし整数)
//emlist[][ruby]{
"\x01\xFE".unpack("C*") # => [1, 254]
[1, -2].pack("C*") # => "\x01\xFE"
[1, 254].pack("C*") # =>......*") # => [513, -514]
[513, 65022].pack("s*") # => "\x01\x02\xFE\xFD"
[513, -514].pack("s*") # => "\x01\x02\xFE\xFD"
//}
ビッグエンディアン (SPARC64):
//emlist[][ruby]{
"\x01\x02\xFE\xFD".unpack("s*") # => [258, -259]
[258, 65277].pack("s*") # => "\x01\x02\xFE\xFD"
[258, -259].pack("s*......c.to_i}.pack("C4")
# => "\x7F\x00\x00\x01"
//}
: sockaddr_in 構造体
//emlist[][ruby]{
require 'socket'
[Socket::AF_INET,
Socket.getservbyname('echo'),
127, 0, 0, 1].pack("s n C4 x8")
# => "\x02\x00\x00\a\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"
//}
pack/unpack を使う代わりに... -
irb (240.0)
-
irb は Interactive Ruby の略です。 irb を使うと、Ruby の式を標準入力から簡単に入力・実行することができます。
...ons:
-f ~/.irbrc を読み込まない
-m bc モード (分数と行列の計算ができる)
-d $DEBUG を true にする (ruby -d と同じ)
-w ruby -w と同じ
-W[level=2] ruby -W と同じ
-r library ruby -r......と同じ
-I ruby -I と同じ
-U ruby -U と同じ
-E enc ruby -E と同じ
--verbose これから実行する行を表示する
--noverbose これから実行する行を表示しない (デフォルト)
--echo 実行結......フォルト)
--noecho 実行結果を表示しない
--inspect 結果出力にinspectを用いる (bc モード以外ではデフォルト)
--noinspect 結果出力にinspectを用いない
--readline readlineライブラリを利用する
--noreadline r......s:
-f ~/.irbrc を読み込まない
-d $DEBUG を true にする (ruby -d と同じ)
-w ruby -w と同じ
-W[level=2] ruby -W と同じ
-r library ruby -r と同じ
-I ruby -I と同じ
-U ruby -U......と同じ
-E enc ruby -E と同じ
--verbose これから実行する行を表示する
--noverbose これから実行する行を表示しない (デフォルト)
--echo 実行結果を表示する (デフォルト)
--noecho 実行結果を表......ない
--inspect 結果出力にinspectを用いる
--noinspect 結果出力にinspectを用いない
--readline readlineライブラリを利用する
--noreadline readlineライブラリを利用しない。デフォルトでは
inf-ruby-mode... -
Timeout
. # timeout(sec , exception _ class = nil) {|i| . . . } -> object (154.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...ものは実用レベルでは少ないのですが、
Socket などは DNSの名前解決に時間がかかった場合割り込めません
(resolv-replace を使用する必要があります)。
その処理を Ruby で実装しなおすか C 側で Ruby
のスレッドを意識してあげる......("www.ruby-lang.org")
# (A)
}
ensure
p Time.now - start
end
# 実行例
=> ["helium.ruby-lang.org", [], 2, "210.251.121.214"]
0.689331
/usr/local/lib/ruby/1.6/timeout.rb:37: execution expired (Timeout::Error)
from -:6:in `timeout'
from -:6
# ge......bash
S="scale=10"
M=32767
trap 'echo "$S; $m1/($m1+$m2)*4" | bc ; echo "count = $((m1+m2))" ; exit 0' INT
m1=0
m2=0
while true
do
x="($RANDOM/$M)"
y="($RANDOM/$M)"
c=$(echo "$S;$x^2+$y^2 < 1.0" | bc)
echo $x $y $c
if [ $c -eq 1 ]
then
let m1++
else... -
Timeout
. # timeout(sec , exception _ class , message) {|i| . . . } -> object (154.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...ものは実用レベルでは少ないのですが、
Socket などは DNSの名前解決に時間がかかった場合割り込めません
(resolv-replace を使用する必要があります)。
その処理を Ruby で実装しなおすか C 側で Ruby
のスレッドを意識してあげる......("www.ruby-lang.org")
# (A)
}
ensure
p Time.now - start
end
# 実行例
=> ["helium.ruby-lang.org", [], 2, "210.251.121.214"]
0.689331
/usr/local/lib/ruby/1.6/timeout.rb:37: execution expired (Timeout::Error)
from -:6:in `timeout'
from -:6
# ge......bash
S="scale=10"
M=32767
trap 'echo "$S; $m1/($m1+$m2)*4" | bc ; echo "count = $((m1+m2))" ; exit 0' INT
m1=0
m2=0
while true
do
x="($RANDOM/$M)"
y="($RANDOM/$M)"
c=$(echo "$S;$x^2+$y^2 < 1.0" | bc)
echo $x $y $c
if [ $c -eq 1 ]
then
let m1++
else... -
Kernel
. # system(command , options={}) -> bool | nil (131.0) -
引数を外部コマンドとして実行して、成功した時に真を返します。
...でコマンドを実行][ruby]{
system("echo *") # => true
# fileA fileB fileC ...
//}
//emlist[exceptionオプションを指定][ruby]{
system("sad", exception: true) # => Errno::ENOENT (No such file or directory - sad)
system('ruby -e "exit(false)"', exception: true) # => Runt......imeError (Command failed with exit 1: ruby -e "exit(false)")
system('ruby -e "exit(true)"', exception: true) # => true
//}
@see Kernel.#`,Kernel.#spawn,Kernel.#exec,system(3)... -
Kernel
. # system(env , command , options={}) -> bool | nil (131.0) -
引数を外部コマンドとして実行して、成功した時に真を返します。
...でコマンドを実行][ruby]{
system("echo *") # => true
# fileA fileB fileC ...
//}
//emlist[exceptionオプションを指定][ruby]{
system("sad", exception: true) # => Errno::ENOENT (No such file or directory - sad)
system('ruby -e "exit(false)"', exception: true) # => Runt......imeError (Command failed with exit 1: ruby -e "exit(false)")
system('ruby -e "exit(true)"', exception: true) # => true
//}
@see Kernel.#`,Kernel.#spawn,Kernel.#exec,system(3)... -
Kernel
. # spawn(env , program , *args , options={}) -> Integer (130.0) -
引数を外部コマンドとして実行しますが、生成した 子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。
...、IO.popen で、子プロセスの
stderr と stdout を混ぜる例を以下に示します。
//emlist[][ruby]{
io = IO.popen(["sh", "-c", "echo out; echo err >&2", :err=>[:child, :out]])
p io.read #=> "out\nerr\n
//}
spawn と IO.popen では
デフォルトでは非標準的なファイルデ......スクリプタだけを継承したい場合は、
io => io という形のオプションを指定します。
//emlist[][ruby]{
# valgrind は --log-fd というオプションでログの出力先を指定できます。
# これで指定したファイルデスクリプタは親プロセスか......セスに継承されなければならないため、 log_w=>log_w とします。
log_r, log_w = IO.pipe
pid = spawn("valgrind", "--log-fd=#{log_w.fileno}", "echo", "a", log_w=>log_w)
log_w.close
p log_r.read
//}
ファイルデスクリプタを入れ替えることもできます。
//emlist[][... -
Kernel
. # spawn(program , *args) -> Integer (130.0) -
引数を外部コマンドとして実行しますが、生成した 子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。
...、IO.popen で、子プロセスの
stderr と stdout を混ぜる例を以下に示します。
//emlist[][ruby]{
io = IO.popen(["sh", "-c", "echo out; echo err >&2", :err=>[:child, :out]])
p io.read #=> "out\nerr\n
//}
spawn と IO.popen では
デフォルトでは非標準的なファイルデ......スクリプタだけを継承したい場合は、
io => io という形のオプションを指定します。
//emlist[][ruby]{
# valgrind は --log-fd というオプションでログの出力先を指定できます。
# これで指定したファイルデスクリプタは親プロセスか......セスに継承されなければならないため、 log_w=>log_w とします。
log_r, log_w = IO.pipe
pid = spawn("valgrind", "--log-fd=#{log_w.fileno}", "echo", "a", log_w=>log_w)
log_w.close
p log_r.read
//}
ファイルデスクリプタを入れ替えることもできます。
//emlist[][... -
ARGF
. class # filename -> String (124.0) -
現在開いている処理対象のファイル名を返します。
...いている処理対象のファイル名を返します。
標準入力に対しては - を返します。
組み込み変数 $FILENAME と同じです。
$ echo "foo" > foo
$ echo "bar" > bar
$ echo "glark" > glark
$ ruby argf.rb foo bar glark
ARGF.filename # => "foo"
ARGF.read(5...