 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Arvin Portlock Guest
|
Posted: Fri Mar 05, 2004 4:02 pm Post subject: Catching output of system() |
|
|
I've written a perl cgi script but it's too slow so I need
to rewrite it in C++. The perl script passes parameters to
a search engine on our local filesystem and processes the
results (number of hits, etc.). I've never had to do anything
like this in C++ before and I don't know where to start.
So what is the equivalent in C++ to something like this?
open (RESULTS, "srch -q $word |");
Which is the perl method of opening a handle on the output
of a pipe. I imagine I'd like to use system() but there doesn't
seem to be a way to capture the output of the call. Reading
through similar messages in this group I get the impression
this really can't be done. It seems like I need to pass the
search results to the program through the operating system
(the results are VERY large), i.e., through STDIN. This would
be less convenient since I'd like to package everything up
in one program.
Is this true? Is there not a way to do this?
|
|
| Back to top |
|
 |
Leor Zolman Guest
|
Posted: Fri Mar 05, 2004 4:07 pm Post subject: Re: Catching output of system() |
|
|
On Fri, 05 Mar 2004 08:02:13 -0800, Arvin Portlock <apollock11 (AT) hotmail (DOT) com>
wrote:
| Quote: | I've written a perl cgi script but it's too slow so I need
to rewrite it in C++. The perl script passes parameters to
a search engine on our local filesystem and processes the
results (number of hits, etc.). I've never had to do anything
like this in C++ before and I don't know where to start.
So what is the equivalent in C++ to something like this?
open (RESULTS, "srch -q $word |");
Which is the perl method of opening a handle on the output
of a pipe. I imagine I'd like to use system() but there doesn't
seem to be a way to capture the output of the call. Reading
through similar messages in this group I get the impression
this really can't be done. It seems like I need to pass the
search results to the program through the operating system
(the results are VERY large), i.e., through STDIN. This would
be less convenient since I'd like to package everything up
in one program.
Is this true? Is there not a way to do this?
|
This is pretty platform-specific. Let me just suggest you download my
STLFilt package for MSVC (link down in my sig), and examine the source code
file CL.CPP. In it, Thomas Becker crafted some code to do piping between
Win32 processes (one of which just happens to be a Perl interpreter,
actually...). This may give you a leg-up.
Good luck,
-leor
Leor Zolman
BD Software
[email]leor (AT) bdsoft (DOT) com[/email]
www.bdsoft.com -- On-Site Training in C/C++, Java, Perl & Unix
C++ users: Download BD Software's free STL Error Message
Decryptor at www.bdsoft.com/tools/stlfilt.html
|
|
| Back to top |
|
 |
Gianni Mariani Guest
|
Posted: Fri Mar 05, 2004 5:30 pm Post subject: Re: Catching output of system() |
|
|
Arvin Portlock wrote:
| Quote: | I've written a perl cgi script but it's too slow so I need
to rewrite it in C++. The perl script passes parameters to
a search engine on our local filesystem and processes the
results (number of hits, etc.). I've never had to do anything
like this in C++ before and I don't know where to start.
So what is the equivalent in C++ to something like this?
open (RESULTS, "srch -q $word |");
Which is the perl method of opening a handle on the output
of a pipe. I imagine I'd like to use system() but there doesn't
seem to be a way to capture the output of the call. Reading
through similar messages in this group I get the impression
this really can't be done. It seems like I need to pass the
search results to the program through the operating system
(the results are VERY large), i.e., through STDIN. This would
be less convenient since I'd like to package everything up
in one program.
Is this true? Is there not a way to do this?
|
There is no -standard- way of doing this. However, you can use popen
which exists in many systems (_popen in win32). If you're using a
Linux/Unix system then you can implement it as a pipe/fork call and not
use the C stdio at all.
|
|
| Back to top |
|
 |
Default User Guest
|
Posted: Fri Mar 05, 2004 5:31 pm Post subject: Re: Catching output of system() |
|
|
Arvin Portlock wrote:
| Quote: |
So what is the equivalent in C++ to something like this?
open (RESULTS, "srch -q $word |");
Which is the perl method of opening a handle on the output
of a pipe.
|
There isn't one. You are into the platform-specific realm now. If on a
UNIX type system, the popen() function may be what you need. Questions
about that should be addressed to comp.unix.programmer. Otherwise, find
a newsgroup dedicated to your platform and ask there.
| Quote: | I imagine I'd like to use system() but there doesn't
seem to be a way to capture the output of the call.
|
That's correct.
Brian Rodenborn
|
|
| Back to top |
|
 |
Arvin Portlock Guest
|
Posted: Sun Mar 07, 2004 8:34 pm Post subject: Re: Catching output of system() |
|
|
Arvin Portlock wrote:
| Quote: | I've written a perl cgi script but it's too slow so I need
to rewrite it in C++. The perl script passes parameters to
a search engine on our local filesystem and processes the
results (number of hits, etc.). I've never had to do anything
like this in C++ before and I don't know where to start.
So what is the equivalent in C++ to something like this?
open (RESULTS, "srch -q $word |");
Which is the perl method of opening a handle on the output
of a pipe. I imagine I'd like to use system() but there doesn't
seem to be a way to capture the output of the call. Reading
through similar messages in this group I get the impression
this really can't be done. It seems like I need to pass the
search results to the program through the operating system
(the results are VERY large), i.e., through STDIN. This would
be less convenient since I'd like to package everything up
in one program.
Is this true? Is there not a way to do this?
Thanks for the suggestions! I know how to do this now. |
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|