diff --git a/qiling/os/os.py b/qiling/os/os.py index 9178321e2..9108f7024 100644 --- a/qiling/os/os.py +++ b/qiling/os/os.py @@ -60,16 +60,13 @@ def __init__(self, ql: Qiling, resolvers: Mapping[Any, Resolver] = {}): # for the standard streams which usually do not support certain operations, # such as fileno(). here we use this to determine how we are going to use # the environment standard streams - + # IDAPython returns True for stdin but False for stdout and stderr so checking # all three - if not hasattr(sys.stdin, "fileno"): - raise UnsupportedOperation - if not hasattr(sys.stdout, "fileno"): - raise UnsupportedOperation - if not hasattr(sys.stderr, "fileno"): - raise UnsupportedOperation - except UnsupportedOperation: + sys.stdin.fileno() + sys.stdout.fileno() + sys.stderr.fileno() + except (UnsupportedOperation, AttributeError): # Qiling is used on an interactive shell or embedded python interpreter. # if the internal stream buffer is accessible, we should use it self._stdin = getattr(sys.stdin, 'buffer', sys.stdin)