I have a C program that constantly returned the % of the job completed to my Perl script so to execute this program I have these lines:
use IO::Handle; $| = 1; $data1 = "./myC.exe 10 10 1 abc"; open PS, "$data1 |"; PS->autoflush(1); while ($line = readline(*PS)) { print $line; print "\n"; }
I have noticed that the results are only returned to my Perl script after my C program are completed and not while it is running. The C program usually takes about 10 hours to complete and every half an hour or so it prints to STDOUT how many percent of the job has been completed so that the Perl script can take it and push it to the web page. I have tried
use IO::Handle; $| = 1; $data1 = "./myC.exe 10 10 1 abc"; open PS, "$data1 |"; PS->autoflush(1); while (<PS>) { print; print "\n"; }
but no luck. It appeared that the result are buffered or stucked somewhere while the C program is running and only get returned to my Perl script after the C program exited. Any help would be appreciated.
Thanks in advance.
Code tags added by GrandFather
In reply to Pipe Problem by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |