/// <summary> /// Reads PseudoConsole output and copies it to the terminal's standard out. /// </summary> /// <param name="outputReadSide">the "read" side of the pseudo console output pipe</param> private static void CopyPipeToOutput(SafeFileHandle outputReadSide, MeshCentralTunnel tunnel) { byte[] buffer = new byte[1024]; using (var pseudoConsoleOutput = new FileStream(outputReadSide, FileAccess.Read)) { while (true) { int len = 0; try { len = pseudoConsoleOutput.Read(buffer, 0, buffer.Length); } catch (Exception) { } if (len == 0) { tunnel.disconnect(); return; } if (tunnel.WebSocket != null) { try { tunnel.WebSocket.SendBinary(buffer, 0, len); } catch (Exception) { } } } } }