"Zufällige" Newlines in Process.getErrorStream

boehmi

Mitglied
Hallo Leute,

ich habe einen Prozess, welcher Daten über seinen Errorstream an mein Javaprogramm weitergibt.
Ich schreibe drüben 17 Byte rein und lese auf der anderen Seite 17 Byte aus.
Soweit so gut.

Leider habe ich auf Windows das Problem, dass an scheinbar zufälligen stellen
auf Java-Seite plötzlich 18 in InputStream.available() steht und wenn ich mir den Inhalt anschaue kommt dort plötzlich 0x10 0x13 drin vor, was ich aber nicht reingeschrieben habe.
Dabei wird 1 Byte meiner Daten überschrieben (von 0x10) und die anderen um 1 Byte verschoben.

Wenn ich den Prozess in der Konsole starte sieht der Error Output wie erwartet aus, also ohne newline.

0x10 0x13 einfach rausfiltern kann ich auch nicht, da die Daten das theoretisch auch beinhalten könnten.

Auf Linux habe ich dieses Problem nicht.

Weiß irgendwer woran das liegt und wie ich das lösen kann?

Grüße
 
Zuletzt bearbeitet:
Was soll mir der Link sagen?

Es geht ja nicht darum, dass auf Linux die Umbrüche anders sind,
sondern dass sie da sind obwohl ich sie nicht hineinschreibe.
Es wirkt so als würde Windows sie hineinzaubern 😉
 
Zauberei ist nicht deterministisch... aber auch nicht determinisitisches Verhalten ist nicht unbedingt Zauberei.

Vermutlich hat sich über irgeneinen Writer ein writeln eingeschlichen...
 
Nein, ich flushe nach jedem 17 Byte Block und die newlines sind Mittem im Block und auch nur in etwa jedem 1000. Block

Trotzdem habe ich irgendwie das Gefühl dass es mit dem Inhalt der Datenbytes zusammenhängt... wenn ich gleichbleibende Daten durchschicke, tritt es nicht auf

Scheint also nicht wirklich ein Java Problem zu sein :/

im C write ich mit fputc(byte, stderr) byteweise in den Stream
 

Zurück
Oben