Thanks! I didn't check the Linux version yet, but the Windows one doesn't seem 
to really do what I need: specifically, if I print from a Nim file like this:
    
    
    # q_outerr.nim
    import os
    
    stdout.writeLine "some stdout"
    stderr.writeLine "some stderr"
    stderr.writeLine "some stderr2"
    sleep(milsecs = 5_000)
    stderr.writeLine "some stderr3"
    stderr.writeLine "some stderr4"
    
    
    Run

with the windows part of the "reader" file modified like this:
    
    
    # q_peek.nim
    ...
      else:
        echo "on windows"
        let prc = startProcess("q_outerr", options = {})
        var errstream = errorStream prc
        var outstream = outputStream prc
        while true:
          if errstream.atEnd:
            echo "err end"
          else:
            let edata = errstream.peekLine
            if edata != "":
              echo "stderr: ", errstream.readLine
          if outstream.atEnd:
            echo "out end"
          else:
            let odata = outstream.peekLine
            if odata != "":
              echo "stdout: ", outstream.readLine
          if errstream.atEnd and outstream.atEnd:
            echo "-break-"
            break
    ...
    
    
    Run

I'm getting a SIGSEGV:
    
    
    on windows
    Traceback (most recent call last)
    C:\prog\mana\q_peek.nim(61) q_peek
    C:\prog\mana\q_peek.nim(48) main
    C:\Users\Mateusz\.choosenim\toolchains\nim-1.0.4\lib\pure\streams.nim(979) 
peekLine
    C:\Users\Mateusz\.choosenim\toolchains\nim-1.0.4\lib\pure\streams.nim(213) 
getPosition
    SIGSEGV: Illegal storage access. (Attempt to read from nil?)
    Error: execution of an external program failed: 'C:\prog\mana\q_peek.exe '
    
    
    Run

I also tried readLine instead of peekLine, but then the sleep makes q_peek 
block until after sleep is finished. I want to be able to discern if there's 
some stderr available from a _not yet finished_ subprocess...

What do you refer to in: " _createIoCompletionPort_ apparently couldn't work"? 
couldn't where? did someone try it sometime? I think in Go they maybe managed 
to somehow make it work?

For now, at least as far as solution for Windows, it seems I'm still looking 
for help...

Reply via email to