io.c

void rb_p(VALUE obj)

p の実体。obj を見やすく出力します。

int rb_io_mode_flags(const char *mode);

fopen(3)のようなモード指定modeをruby内部のモードフラグに 変換します。

modeは、[rwa][b][+]という文字列です(例: "rb+") 戻り値は、 FMODE_READABLE, FMODE_WRITABLE, FMODE_BINMODE, FMODE_READWRITE の論理和です。FMODE_READWRITEは、FMODE_READABLEFMODE_WRITEABLEの論理和です。

static int rb_io_mode_flags2(int mode)

open(2)のようなモード指定modeをruby内部のモードフラグに 変換します。

modeは、O_RDONLY, O_WRONLY, O_RDWRのい ずれかで 対応する以下の値のいずれかを返します。 FMODE_READABLE, FMODE_WRITABLE, FMODE_READWRITE

FMODE_READWRITEは、FMODE_READABLEFMODE_WRITEABLEの論理和です。

MS-Windowsなどファイルにバイナリ/テキスト属性の区別があるプラッ トホームでは、modeO_BINARYの論理和が指定されてい れば、戻り値にはFMODE_BINMODEの論理和が指定されます。

static VALUE pipe_open(char *pname, char *mode)

popen(3)を実行します。引数pnamemodeはpopen(3)の 引数に対応します。

pnameは、実行するプロセスで"-"ならば、自身を fork(2)します。

IOオブジェクトを生成し、 mode"r"のとき、 子プロセスの標準出力を生成したIOの入力につなぎます。

mode"w"のとき、 子プロセスの標準入力を生成したIOの出力につなぎます。

mode"+"が含まれれば、子プロセスの標準入出力を 生成したIOの入出力につなぎます。

生成したIOオブジェクトを返します。(pname"-"であれば、子プロセスには、nilを返します)