Using Python on a fork-less POSIX-like OS

Terry Reedy tjreedy at udel.edu
Sun Jul 29 17:55:02 EDT 2018


On 7/29/2018 10:28 AM, Jan Claeys wrote:
> On Fri, 2018-07-27 at 19:13 +0200, Barath Aron wrote:
>> I intend to cross-compile Python v3.6.6 to Threos ( https://threos.io
>>   ) operating system. Threos is supports a quite large set from
>> POSIX and C89/C99. Unfortunately, Threos lacks fork(2), but
>> provides posix_spawn(3) instead. I already made some local changes
>> in posixmodule.c to compile due to some features are detected
>> as present but actually not supported, like HAVE_FORK -- I blame
>> autotools for this :-).

Then perhaps Threos should be patched to describe itself more accurately 
or autotools patched to detect more accurately.

>> I don't know, however, whether the Python
>> shall cross-compile without issues.

We generally prefer that it does, but no longer try to officially 
support (with conditionals in the codebase) every odd-ball OS.  You or 
some Threos group may have to keep a separate patch set, to be update 
for each Python version.  If there is any such thing now, Google does 
not find it.

>> My question is that the _posixsubprocess.c can be prepared to
>> use posix_spawn(3) instead of fork(2)?

What does the doc for _posixubprocess so it does?  If it says 'create a 
subprocess by forking', then perhaps not.

>> Maybe the UNIX/Linux version
>> can also benefit from it, see: https://salsa.debian.org/ruby-
>> team/ruby-posix-spawn
> 
> You might want to ask this on the python-dev mailing list.

multiprocessing module uses 'spawn' rather than 'fork' on Windows and it 
has an option to use 'spawn' even on *nix.  I presume the latter refers 
to posix_spawn.  You might want to check the multiprocessing code to see 
what *it* is doing 'under the covers'.

-- 
Terry Jan Reedy




More information about the Python-list mailing list