context.setLastExitStatus(context.nil);
port = PopenExecutor.pipeOpen(context, str, "r", OpenFile.READABLE|OpenFile.TEXTMODE, null);
if (port.isNil()) return RubyString.newEmptyString(runtime);
fptr = ((RubyIO)port).getOpenFileChecked();
result = fptr.readAll(context, fptr.remainSize(), context.nil);
((RubyIO)port).rbIoClose(runtime);
return result;
}