module function Kernel.#syscall

syscall(num, *arg) -> Integer[permalink][rdoc]

numで指定された番号のシステムコールを実行します。第2引数以降をシステムコールの引数として渡します。

どの数値がどのシステムコールに対応するかは、 syscall(2) や /usr/include/sys/syscall.h を参照してください。

システムコールの慣習に従い、syscall(2) が -1 を返す場合には例外 Errno::EXXX が発生します。それ以外では、返した値をそのまま数値で返します。

ライブラリ fiddle を使えばより高レベルな操作ができます。

[PARAM] num:
システムコール番号です。
[PARAM] arg:
文字列か、整数です。最大 9 個まで渡すことができます。
[EXCEPTION] Errno::EXXX:
syscall(2) が -1 を返した場合に発生します。
[EXCEPTION] NotImplementedError:
実行環境がこのメソッドに対応していないとき発生します。


syscall 4, 1, "hello\n", 6   # '4' is write(2) on our box
# => hello

[SEE_ALSO] fiddle, syscall(2freebsd), syscall(2linux)