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.
Not sure that I understand. All the data will be available through the StdOut event. You can use StringBuilder or BytesBuilder to collect the data and work with it whenever you like.
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.