Из окружения wine можно запускать линуксовые программы, хоть start /unix из шелла, хоть CreateProcess. Но есть одна проблема: подождать и получить код возврата невозможно. CreateProcess возвращает нуль вместо hProcess, start /wait /unix тоже не ждёт, _spawnl(_P_WAIT,…) тоже не ждёт, в общем всё плохо.
Есть способ как-то это обойти? Сделать какой-нибудь wrapper, который видит и libwine и posix (dll.so?), и чтобы он сделал posix_spawn и wait? Может кто-то уже делал?
Устроила бы альтернатива: среда с native компилятором mingw + всяким bash/coreutils/whatever, выполняющаяся успешно под wine. Msys2 не завёлся.
Если интересно, зачем это всё и где всплыло: хочу just for fun собирать SBCL for Windows кросс-компилятором mingw на линуксе. Всё неплохо работает, пока не доходит дело до contribs, где под виндовым sbcl.exe код хочет (run-program "cc"...)
и (run-program "cat"...)
. И у меня упорное впечатление, что когда-то такое просто работало (в 2012 году я делал сборки под wine, эти вызовы там тогда уже были), но раскопки wine этому впечатлению противоречат (говорят, никогда не работало ожидание на unix processes).