I tried this (inside the handler):

...
my $cmd = '/opt/reports/bin/getdata';
system($cmd, @params);
if ( open(DATA, '/opt/reports/var/data.txt') ) {
    local $_;
    while (<DATA>) { $r->print($_) }
    close DATA;
} else {
    $r->print("<h1>Canīt read data</h1>");
}
...

The program getdata put output in /opt/reports/var/data.txt

I tried also:

qx{ $cmd @params }

and

`$cmd @params`

but it does not work.

The problem is that if you check the /opt/reports/var/ directory the
data.txt is generated correctly for each requet.

Thanks,
Alejandro Galue.

-----Original Message-----
From: Tom Schindl [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, April 28, 2004 3:29 PM
To: Alejandro Galue
Cc: [EMAIL PROTECTED]
Subject: Re: Problem with perl system() function

Hi,

system will wait until the executed shell-script has finished. I'd rather
guess that you are not allowed to call the commandline programm you'd like
to call.

Did you get any thing in the error_log? How do you call the system-command:

* system
*``
* qx

Maybe you could show us the code you're using and we'll tell you whats wrong
there.

Tom

Alejandro Galue wrote:
> Hello All,
> 
> Iīm using mod_perl2 and Apache2 over Fedora Core 1.
> 
> I have a handler that need to call an external program to complete the 
> request.
> 
> This program put its output to a file, and then I read this output 
> from the handler (after system function) to complete the request.
> 
> My problem is (I assume) when I call system, it returns inmediatly and 
> of course when I try to read the file output, it does not exist; 
> becase it was created later.
> 
> How can I force to wait for a system function terminate the execution 
> of an external program.
> 
> Thanks,
> Alejandro Galue.
> 
> 
> 






--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html

Reply via email to