Jump to content
xisto Community
Sign in to follow this  
suicide1405241470

Question about Runtime.exec() stdout/stderr

Recommended Posts

Runtime.exec() stdout/stderr lost after execvp() in C program?Hello,I have a C program that is printing one line of text to stdout, then it is replacing the current process with a new one using execvp(), and then the new program is printing many lines of text to stdout.When I execute the program in a console (Linux), I can see the line printed by the first process followed by the lines printed by the second process.But when I run the program using Runtime.exec(), the line printed by the first process seems to be thrown away, actually everything the first process writes to stdout gets lost. The first line that can be read from Process' InputStream is the one printed by the second process.This behaviour is consistent with JDK 1.3.1, 1.4.2 and 1.5.0 RC, so I assume this is not a bug.My question is, why is it not possible to read the text written by the first process before execvp()? Is there a way to make that work?I could provide very simple sample code if needed.

Share this post


Link to post
Share on other sites

fflush

Question about Runtime.exec() stdout/stderr

 

You should fflush(stdout) before Runtime.Exec(). It might just be that the first line gets stuck in the output buffer and never gets flushed to the terminal. The new process probably allocates a new output buffer, losing all the un-flushed output data from the first executable.

 

-Greg Bronevetsky

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.