B4J Question jShell - force reading stdOut inputStream

Daestrum

Expert
Licensed User
Longtime User
Is there a way to force the sh_stdOut to re-read the inputStream in case bytes have arrived since the last read.

If I use Process I can use this construct to ensure I get all the data.
B4X:
Sub outputToCons
 Dim buf(consOut.BytesAvailable) As Byte
 If consOut.BytesAvailable > 0 Then
  consOut.ReadBytes(buf,0,consOut.BytesAvailable)
  Dim st As String = BytesToString(buf,0,buf.Length,"utf8")
  TextArea1.text = TextArea1.text & st
  TextArea1.SelectAll
  TextArea1.SetSelection(TextArea1.SelectionEnd,TextArea1.SelectionEnd)
 End If
 Sleep(20)
 If consOut.BytesAvailable>0 Then outputToCons
End Sub

Just wondered if there was a method within jshell I could use to do the same.
 

Daestrum

Expert
Licensed User
Longtime User
I will try and explain.

(trying jshell and directly coding a Process)

I am trying to get the output from a persistent command prompt window (started with /k).
The first data returned from it is ok, the headers for the shell.
But subsequent data returned on _stdOut in response to WriteToInputStream(…) is patchy, I may get the top part or the last few lines, but never the complete response unless it's really short.
 
Upvote 0

Daestrum

Expert
Licensed User
Longtime User
consOut is the stream from p.getInputStream() ( the process inputstream from the processbuilder)
 
Upvote 0
Top