code: def stdchannel_redirected(stdchannel, dest_filename, fake=False):
      
      if fake:
          yield
          return
      oldstdchannel = dest_file = None
      try:
          oldstdchannel = os.dup(stdchannel.fileno())
          dest_file = open(dest_filename, 'w')
          os.dup2(dest_file.fileno(), stdchannel.fileno())
  
          yield
      finally:
          if oldstdchannel is not None:
              os.dup2(oldstdchannel, stdchannel.fileno())
          if dest_file is not None:
              dest_file.close()
docs: A context manager to temporarily redirect stdout or stderr
  
      e.g.:
  
      with stdchannel_redirected(sys.stderr, os.devnull):
          if compiler.has_function('clock_gettime', libraries=['rt']):
              libraries.append('rt')