Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8204657
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 7, 20262026-06-07T07:57:53+00:00 2026-06-07T07:57:53+00:00

I have a problem with an interactive process in Java. I have threads to

  • 0

I have a problem with an interactive process in Java. I have threads to read STDOUT and STDERR and a thread to handle input for the process. But there are no data available within the STDOUT stream until the process has terminated. Then is the entire output printed at once.

DBG    | Pipe action-STDERR started
DBG    | Pipe action-STDIN started
DBG    | Pipe action-STDOUT started

STDIN  | Try to put some input.
STDIN  | I cannot see any output.
STDIN  | Nevertheless the interaction works.
STDIN  | It works on background.
STDIN  | Let's terminate the process to see the truth.
STDIN  | quit

STDOUT | Enter some text, please: The text is 'Try to put some input.'
STDOUT | Enter some text, please: The text is 'I cannot see any output.'
STDOUT | Enter some text, please: The text is 'Nevertheless the'
STDOUT | Enter some text, please: The text is 'interaction works.'
STDOUT | Enter some text, please: The text is 'It works on background.'
STDOUT | Enter some text, please: The text is 'Let's terminate the process to see the truth.'
STDOUT | Enter some text, please: The text is 'quit'
STDOUT | Bye!
DBG    | Trying to kill thread action-STDOUT
DBG    | Trying to kill thread action-STDERR
DBG    | Trying to kill thread action-STDIN
DBG    | Pipe action-STDERR finished
DBG    | Finished
DBG    | Pipe action-STDIN finished
DBG    | Pipe action-STDOUT finished

The lines prefixed with STDOUT are lines written by the process. The lines prefixed with STDIN are lines written by me. Lines prefixed by DBG are lines written by the tested Java program as debug information. Let’s try to execute the same process in system console.

Enter some text, please: Text
The text is 'Text'
Enter some text, please: quit
The text is 'quit'
Bye!

The behavior fullfits my expectation. I’m asked for some input. I do it and get the answer.

I’m surprissed, that I’ve found several posts on web including Stackoverflow, but without any answer marked as acceptable solution. (For example Problem reading InputStream from Java Process.) It seems Java developers haven’t ever been dealing with execution of an interactive process. Strange is, that output of non-interactive process (as ping) is appearing sequentially, while the process is running. Without any problem. But when the process is waiting for user input, the output is somehow blocked.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-07T07:57:54+00:00Added an answer on June 7, 2026 at 7:57 am

    Regrettably it is not a bug, it is a feature. Either on Linux or on Windows pipes are implemented like this. They are buffered in order to increase performace. One process produces data and the second one takes them over. There is no interaction needed and this model works in 99% cases as well.

    However the console is another kind of application. The system console is a part of OS and it works a bit other way the our console written in Java. The system console of course prints all data immediately. All works fine. Then the same process executed from our code does not print prompts, albeit it shall work. What’s wrong? There is no buffer between system console and process. But there is a buffer between our process and our Java code on the contrary. And that’s the cause.

    The process does not flush output automatically. Regardless to the language the process is written in. Process written in Java, Perl or C never prints prompts until explicit flush has been added to its code. If you can affect the code of a process you will interact with, update the code (pseudocode follows):

    print 'Give me a number '
    flush STDOUT
    number = get STDIN
    print 'You wrote ' + number
    flush STDOUT
    

    There is not another solution. If the third-party application does not flush its outputs, you cannot use it in your console. You can hardly evade the buffering. Nevertheless it is possible somehow. There are libraries or you can find an open source application which can interact with problematic processes and inspect its code.

    Tip: Check out Apache Commons Exec. It is a library specialized in process executing.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have problem SIMILAR to preventing form data reposting, but not quite the same
I have problem with repopulating form_upload after validation. Other input fields or selectboxes are
I have problem while loading data into html select when users press or click
I'm trying to learn python but have some problem running source files from power
I have problem with http://abfoodpolicy.com/ . In IE 8 and 9 the right sidebar
I have problem with my query on C, I’m using the oci8 driver. This
I have problem with show or hide form in Window Form Application. I start
I have problem with UIWebView delay when the load image from url. In my
I have problem developing with live555. I already build the lib-files and example projects
I have problem with TableView its empty. In (.h) file: @interface TableViewController : UITableViewController{

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.