•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the C section within the Software Development category of DaniWeb, a massive community of 374,021 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,797 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C advertiser:
Views: 12304 | Replies: 6
![]() |
I would liek to invisibly run a console application, capture it's output, and save its contents into a log window with an edit control. I know it's possible becuase i've seen it done, but how can I capture terminal output?
A Hacker's Mind:
"I thought what I'd do was, I'd pretend I was one of those deaf-mutes..." - J.D.Salinger
"I thought what I'd do was, I'd pretend I was one of those deaf-mutes..." - J.D.Salinger
•
•
Join Date: Mar 2004
Posts: 76
Reputation:
Rep Power: 5
Solved Threads: 2
i'm not sure if this is the answer u want, b/c i dont fully understand what u mean by "log window", but if u run a program from DOS prompt like:
./program >outfile standard output is redirected to the file outfile. if u want to do that inside the program, u use the dup2() function. open the output file, and then dup2 the descriptor onto STDOUT.
./program >outfile standard output is redirected to the file outfile. if u want to do that inside the program, u use the dup2() function. open the output file, and then dup2 the descriptor onto STDOUT.
•
•
•
•
Originally Posted by infamous
ugh, nevermind apparently windows doesn't support dup'ing
char psBuffer[128];
FILE *telnet;
/* Run telnet so that it writes its output to a pipe. Open this
* pipe with read text attribute so that we can read it
* like a text file.
*/
if( (telnet = _popen( "cdrecord --help", "rt" )) == NULL )
exit( 1 );
/* Read pipe until end of file. End of file indicates that
* telnet closed its standard out (probably meaning it
* terminated).
*/
while( !feof( telnet ) )
{
if( fgets( psBuffer, 128, telnet ) != NULL )
printf( psBuffer );
}
/* Close pipe and print return value of telnet */
printf( "\nProcess returned %d\n", _pclose( telnet ) ); NOTE: I only used telnet for testing purposes, my real program created a blank file when I tried "cmd /c myProgram.exe > datafile.txt" with a system command or just "myProgram.exe > datafile.txt". The above was my solution.
A Hacker's Mind:
"I thought what I'd do was, I'd pretend I was one of those deaf-mutes..." - J.D.Salinger
"I thought what I'd do was, I'd pretend I was one of those deaf-mutes..." - J.D.Salinger
•
•
Join Date: Mar 2006
Posts: 1
Reputation:
Rep Power: 0
Solved Threads: 0
•
•
•
•
Originally Posted by FireNet
I do not not understand how the pipeing program works
can i have the source if you have one, i want to capture the telnet outputs to a txt file, all i need to do it programatically, i need to login telnet and process some commands and get the output to a file, if i can get a c++ or vb source code which does this, it would be great, thanks in advance
sarin
•
•
Join Date: Aug 2005
Location: near St Louis, Missouri, USA
Posts: 10,182
Reputation:
Rep Power: 34
Solved Threads: 822
•
•
•
•
Originally Posted by infamous
ugh, nevermind apparently windows doesn't support dup'ing
yes it does -- for redirecting stdout or stderr to a file. You can't redirect it like that to a MS-Windows GUI control, such as an edit control. And I don't think you can do that under *nix X11 controls either.
But I know what you want to do can be done -- I've seen it, but not sure how to do it either. Maybe pipes is the way to go.
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
•
•
•
•
•
•
•
•
DaniWeb C Marketplace
Other Threads in the C Forum
- Previous Thread: creating files larger than 2GB with FILE or fstream
- Next Thread: Noob: needs help with file I/O



Linear Mode