Welche Datei/Socket ist denn unter Handle 45 zu erreichen, und welche unter 40? Mir kommt es etwas spanisch vor, dass das meiste an 45 gesendet wird, und nur das \r an 40.
Hängt vielleicht mit deiner Methode zusammen, den Socket nochmal auf ein Pseudo-TTY umzuleiten. Schau im trace doch mal nach, welche Aufrufe von open 40 und 45 zurückgeben (achte darauf, dass du die letzten nimmst, die Handles werden wiederverwendet)