For a stream, returns whether it is attached to a file, pipe, terminal, or something else.
Source
StdioType stdioType(object) { if (object is _StdStream) { object = object._stream; } else if (object == stdout || object == stderr) { switch (_StdIOUtils._getStdioHandleType(object == stdout ? 1 : 2)) { case _STDIO_HANDLE_TYPE_TERMINAL: return StdioType.TERMINAL; case _STDIO_HANDLE_TYPE_PIPE: return StdioType.PIPE; case _STDIO_HANDLE_TYPE_FILE: return StdioType.FILE; } } if (object is _FileStream) { return StdioType.FILE; } if (object is Socket) { int socketType = _StdIOUtils._socketType(object); if (socketType == null) return StdioType.OTHER; switch (socketType) { case _STDIO_HANDLE_TYPE_TERMINAL: return StdioType.TERMINAL; case _STDIO_HANDLE_TYPE_PIPE: return StdioType.PIPE; case _STDIO_HANDLE_TYPE_FILE: return StdioType.FILE; } } if (object is _IOSinkImpl) { try { if (object._target is _FileStreamConsumer) { return StdioType.FILE; } } catch (e) { // Only the interface implemented, _sink not available. } } return StdioType.OTHER; }