Arthur Bergman <[EMAIL PROTECTED]> wrote:

Hi Arthur,

> Hi,

> If I execute a miniperl (but linked into parrot and with it's own
> parrot interpreter) it works, but if the caller closes(STDERR) before
> invoking miniperl no output is ever seen on STDOUT.

Parrot's IO system is currently reworked heavily and its not finished
yet. I'm sure Juergen Boemmels comes up with a solution for this.

> This is terribly annoying since ExtUtils::MakeMaker does silly things
> like this, could there be some code in parrot that becomes really
> unhappy if STDERR is not open?

>From a quick look at it I would think:

io/io_unix.c:PIO_unix_init returns -1:

   io = PIO_unix_fdopen(interpreter, layer, STDERR_FILENO, PIO_F_WRITE);
   if (!io) return -1;

which calls internal_exception in io/PIO_init()

    if (!PIO_STDIN(interpreter) || !PIO_STDOUT(interpreter)
          || !PIO_STDERR(interpreter)) {
          internal_exception(PIO_ERROR, "PIO init std handles failed.");
    }

which is the end of the interpreter, but never seen, because the message
goes to STDERR.

> Arthur

leo

Reply via email to