Hi guys, long time listener first time caller. ;) Anyways, i am writing a "wrapper" that calls other scripts via IPC::Open3. At the moment i am simply testing this wrapper with various test scripts and i came across an unexpected road block. Here is my wrapper code simplified down to the relevant code:
And here is the script that it calls:use IPC::Open3; my $script = shift; $|++; eval {open3(undef, \*OUT, \*ERR, "./$script @ARGV") }; wait(); my $status = $? >> 8; print "Now executing $script @ARGV"; print "STDOUT:"; print while <OUT>; print "STERR:"; print while <ERR>; print "$script finished with status = $status"; close OUT;
That's it. Now, if i call the wrapper like so:print for 1 .. 1030;
Then all is well. However (the road block), if i change that number in the script that is called by the wrapper to anything higher than 1030, the wrapper hangs and does not stop. I have to halt execution via CTRL-C. It is as if my wrapper doesn't know what to do when it hits that 4096th byte ... (or 4097th ... i was always off by one ... or two) ..../wrapper.pl some_script.pl
So my question is, does this happen for you and how can i prevent this lock up? Thanks in advance.
Oh yeah ... just in case ... This is perl, v5.8.0 built for i386-linux-thread-multi
jeffa
L-LL-L--L-LL-L--L-LL-L-- -R--R-RR-R--R-RR-R--R-RR B--B--B--B--B--B--B--B-- H---H---H---H---H---H--- (the triplet paradiddle with high-hat)
In reply to Script hangs when called via IPC::Open3 by jeffa
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |