> Hey list,
>
> We're trying to turn some xml into a pdf using fop. A wrapper has been
> written for fop so that we can pass it xml on the stdin, and get the
> pdf from the stdout.
>
> We're using IPC::Open2 to set this up:
I remember having lots of trouble with the implicit redirection
that mod_perl performs (IIRC, STD[IN|OUT|ERR] streams don't map to file
descriptors 0, 1 and 2 under mod_perl and this confuses IPC::Open[23]).
I ended up recoding my very own fork() - pipe() - dup() - exec()
- exit() stuff, using POSIX::close(), POSIX::dup2() (that don't get
confused) and POSIX::SYS_exit() instead of exit() in the child process
(so that global variables representing e.g. a database connection
don't get destroyed, causing shutdown messages to get sent to the
remote server).
> use IPC::Open2;
> open2(*README, *WRITEME, "$progname");
> print WRITEME $thexml or warn "problem writing to $progname: $!\n";
> my $pdf = <README>;
> close(WRITEME);
> close(README);
You should close WRITEME before attempting to read, or deadlock may
occur because either 1) WRITEME wasn't flushed from Perl's stdio buffers
and $progname didn't see any input yet, or 2) $progname doesn't see
end-of-file and thus expects more data.
--
<< Tout n'y est pas parfait, mais on y honore certainement les jardiniers >>
Dominique Quatravaux <[EMAIL PROTECTED]>