Subject: bug#66852: Pipes not working in MSYS2

From: Francesco Corte <[email-masked]>
Date: Tue, 31 Oct 2023 17:43:36 +0000

Hello

Pipes are not working in Windows (MSYS2)

here is an example program

(use-modules (ice-9 popen)
              (ice-9 rdelim))

(let ((pipe (open-pipe* OPEN_READ "uname")))
   (display (read-line pipe))
   (close-pipe pipe))

and its output

λ guile -s main.scm
#<eof>

of course `uname` works in the shell (bash

λ uname
MSYS_NT-10.0-19045

the *features* variable signals that pipes are in theory available

scheme@(guile-user)> *features*
$1 = (readline record defmacro debug-extensions values array-for-each 
array sort socket net-db regex popen fork EIDs posix readlink-port 
chdir-port inexact complex random i/o-extensions i18n current-time delay 
threads char-ready? system)

here is the version of guile I'm using
λ guile --version
guile (GNU Guile) 3.0.9
Copyright (C) 2023 Free Software Foundation, Inc.

I tried the other `open-pipe` function, to the same result. 
Interestingly, `(system "uname")` works as expected.

both `popen` and `pclose` are available as stdio.h functions, I made 
sure by writing essentially the same program as above in C.

Thanks!