Checking Return Codes in Apache2::SubProcess->spawn_proc_prog()

Checking Return Codes in Apache2::SubProcess->spawn_proc_prog()

am 07.10.2008 16:25:20 von eric.berg

I'm using spawn_proc_prog() to run external programs from apache, but
can't find any docs on how to check the return status. It doesn't
appear to set $?, nor have I found any reference to variables or methods
that would provide that information.

Can anybody help me with this?

The specific problem that I'm trying to solve has to do with executing
CVS commands from within the context of Apache2. CVS returns both
STDOUT and STDERR in response to, in this case, the rdiff command. It
is sometimes possible to check the content of STDERR to determine the
status of a command, but the STDERR is often valid output. I suppose
that using the -q to suppress output of nice-to-have STDERR is an option
too, but I'm looking for something more discrete.

Thanks for any insight you can provide.

Eric
_______________________________________________

This e-mail may contain information that is confidential, privileged or o=
therwise protected from disclosure. If you are not an intended recipient =
of this e-mail, do not duplicate or redistribute it by any means. Please =
delete it and any attachments and notify the sender that you have receive=
d it in error. Unless specifically indicated, this e-mail is not an offer=
=20to buy or sell or a solicitation to buy or sell any securities, invest=
ment products or other financial product or service, an official confirma=
tion of any transaction, or an official statement of Barclays. Any views =
or opinions presented are solely those of the author and do not necessari=
ly represent those of Barclays. This e-mail is subject to terms available=
=20at the following link: www.barcap.com/emaildisclaimer. By messaging wi=
th Barclays you consent to the foregoing. Barclays Capital is the invest=
ment banking division of Barclays Bank PLC, a company registered in Engla=
nd (number 1026167) with its registered office at 1 Churchill Place, Lond=
on, E14 5HP. This email may relate to or be sent from other members of t=
he Barclays Group.
_______________________________________________

Re: Checking Return Codes in Apache2::SubProcess->spawn_proc_prog()

am 08.10.2008 18:46:07 von Fred Moyer

eric.berg@barclayscapital.com wrote:
> I'm using spawn_proc_prog() to run external programs from apache, but
> can't find any docs on how to check the return status. It doesn't
> appear to set $?, nor have I found any reference to variables or methods
> that would provide that information.
>
> Can anybody help me with this?

Was this part of the documentation useful or did it not explain what you
need?

http://perl.apache.org/docs/2.0/api/Apache2/SubProcess.html# C_spawn_proc_prog_

>
> The specific problem that I'm trying to solve has to do with executing
> CVS commands from within the context of Apache2. CVS returns both
> STDOUT and STDERR in response to, in this case, the rdiff command. It
> is sometimes possible to check the content of STDERR to determine the
> status of a command, but the STDERR is often valid output. I suppose
> that using the -q to suppress output of nice-to-have STDERR is an option
> too, but I'm looking for something more discrete.

RE: Checking Return Codes in Apache2::SubProcess->spawn_proc_prog()

am 08.10.2008 19:08:13 von eric.berg

Am I missing something, Fred, or is there actually something in that
test that indicates how to read the exit status of the process (i.e.,
$?)?

I have read this a number of times, but have yet to find anything
relevant there.=20

Eric

> -----Original Message-----
> From: Fred Moyer [mailto:fred@redhotpenguin.com]=20
> Sent: Wednesday, October 08, 2008 12:46 PM
> To: Berg, Eric
> Cc: modperl@perl.apache.org
> Subject: Re: Checking Return Codes in=20
> Apache2::SubProcess->spawn_proc_prog()
>=20
> eric.berg@barclayscapital.com wrote:
> > I'm using spawn_proc_prog() to run external programs from=20
> apache, but
> > can't find any docs on how to check the return status. It doesn't
> > appear to set $?, nor have I found any reference to=20
> variables or methods
> > that would provide that information.
> >=20
> > Can anybody help me with this?
>=20
> Was this part of the documentation useful or did it not=20
> explain what you=20
> need?
>=20
> http://perl.apache.org/docs/2.0/api/Apache2/SubProcess.html# C_
> spawn_proc_prog_
>=20
> >=20
> > The specific problem that I'm trying to solve has to do=20
> with executing
> > CVS commands from within the context of Apache2. CVS returns both
> > STDOUT and STDERR in response to, in this case, the rdiff=20
> command. It
> > is sometimes possible to check the content of STDERR to=20
> determine the
> > status of a command, but the STDERR is often valid output. =20
> I suppose
> > that using the -q to suppress output of nice-to-have STDERR=20
> is an option
> > too, but I'm looking for something more discrete.
>=20
_______________________________________________

This e-mail may contain information that is confidential, privileged or o=
therwise protected from disclosure. If you are not an intended recipient =
of this e-mail, do not duplicate or redistribute it by any means. Please =
delete it and any attachments and notify the sender that you have receive=
d it in error. Unless specifically indicated, this e-mail is not an offer=
=20to buy or sell or a solicitation to buy or sell any securities, invest=
ment products or other financial product or service, an official confirma=
tion of any transaction, or an official statement of Barclays. Any views =
or opinions presented are solely those of the author and do not necessari=
ly represent those of Barclays. This e-mail is subject to terms available=
=20at the following link: www.barcap.com/emaildisclaimer. By messaging wi=
th Barclays you consent to the foregoing. Barclays Capital is the invest=
ment banking division of Barclays Bank PLC, a company registered in Engla=
nd (number 1026167) with its registered office at 1 Churchill Place, Lond=
on, E14 5HP. This email may relate to or be sent from other members of t=
he Barclays Group.
_______________________________________________

Re: Checking Return Codes in Apache2::SubProcess->spawn_proc_prog()

am 08.10.2008 20:00:24 von Fred Moyer

eric.berg@barclayscapital.com wrote:
> Am I missing something, Fred, or is there actually something in that
> test that indicates how to read the exit status of the process (i.e.,
> $?)?
>
> I have read this a number of times, but have yet to find anything
> relevant there.

The short answer is no, spawn_proc_proc() does not return the exit status.

The long answer is you can probably do this with mod_perl if you dig
into the APR libraries and use apr_proc_wait to call the program:

http://apr.apache.org/docs/apr/1.2/group__apr__thread__proc. html#g0936f7a7fe7e2d5e08979c9f343a5a1b

Several of the apr functions are mapped in the mod_perl-2.0/xs/APR
directory. Unfortunately apr_proc_wait is not one of them, perhaps
APR::Proc is the right place to expose this function? (Gozer|Toersten??)
I'll defer to the wisdom of others on this list who are more
experienced in this area.

Hope that helps a bit - it looks like it can be done but just hasn't
been done yet. If you are at ApacheCon next month feel free to track me
down and I'll see if maybe we can hack it into place.


>
> Eric
>
>> -----Original Message-----
>> From: Fred Moyer [mailto:fred@redhotpenguin.com]
>> Sent: Wednesday, October 08, 2008 12:46 PM
>> To: Berg, Eric
>> Cc: modperl@perl.apache.org
>> Subject: Re: Checking Return Codes in
>> Apache2::SubProcess->spawn_proc_prog()
>>
>> eric.berg@barclayscapital.com wrote:
>>> I'm using spawn_proc_prog() to run external programs from
>> apache, but
>>> can't find any docs on how to check the return status. It doesn't
>>> appear to set $?, nor have I found any reference to
>> variables or methods
>>> that would provide that information.
>>>
>>> Can anybody help me with this?
>> Was this part of the documentation useful or did it not
>> explain what you
>> need?
>>
>> http://perl.apache.org/docs/2.0/api/Apache2/SubProcess.html# C_
>> spawn_proc_prog_
>>
>>> The specific problem that I'm trying to solve has to do
>> with executing
>>> CVS commands from within the context of Apache2. CVS returns both
>>> STDOUT and STDERR in response to, in this case, the rdiff
>> command. It
>>> is sometimes possible to check the content of STDERR to
>> determine the
>>> status of a command, but the STDERR is often valid output.
>> I suppose
>>> that using the -q to suppress output of nice-to-have STDERR
>> is an option
>>> too, but I'm looking for something more discrete.
> _______________________________________________
>
> This e-mail may contain information that is confidential, privileged or otherwise protected from disclosure. If you are not an intended recipient of this e-mail, do not duplicate or redistribute it by any means. Please delete it and any attachments and notify the sender that you have received it in error. Unless specifically indicated, this e-mail is not an offer to buy or sell or a solicitation to buy or sell any securities, investment products or other financial product or service, an official confirmation of any transaction, or an official statement of Barclays. Any views or opinions presented are solely those of the author and do not necessarily represent those of Barclays. This e-mail is subject to terms available at the following link: www.barcap.com/emaildisclaimer. By messaging w
ith Barclays you consent to the foregoing. Barclays Capital is the investment banking division of Barclays Bank PLC, a company registered in England (number 1026167) with its registered off
ice at 1 Churchill Place, London, E14 5HP. This email may relate to or be sent from other members of the Barclays Group.
> _______________________________________________


--
Red Hot Penguin Consulting LLC
mod_perl/PostgreSQL consulting and implementation
http://www.redhotpenguin.com/