• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Exiting a Runtime.exec()

 
Paul Keohan
Ranch Hand
Posts: 411
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I am running the following code. It does all my dos command fine but it won't 'finish' for me. I'd like it to get to a 'Press Return to Continue' message or something like that. Instead, it just hangs. As you can see, I've added close() and flush() and destroy() methods in the hope that one of them will do this for me but no luck yet.
Thanks!

 
Jim Yingst
Wanderer
Sheriff
Posts: 18671
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Your program is in the br.readLine() method, waiting for the cmd program to output another line. It doesn't, because you haven't sent it any more commands. But the cmd process has no way of knowing that you won't be sending any more commands, so it sits waiting for more. Meanwhile the BufferedReader (and enclosed streams) is waiting for an EOF, which would tell it to go ahead and let readLine() return a null, nice no more lines will be sent. But that's not happening.
To break this deadlock, the easiest thing to do is to take your dos.close() method and move it up to before the br.readLine() loop. This way, the cmd process knows that there will be no more commands issued to it, and so it can go ahead and shut itself down - which among other things, means it will send an EOF to our BufferedReader, which will allow it to see that there is nothing else to read, and return a null from the readLine() method. This will allow your method to complete normally.
 
Paul Keohan
Ranch Hand
Posts: 411
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Works great. Thanks!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic