On Unix environments a subprocess is typically created with fork()
+ exec()
. fork
inherits all file descriptors of the parent process (fork(2) - Linux manual page) - unless the file/socket/pipe has the FD_CLOEXEC
flag set. This can be done with fcntl
(c - What does the FD_CLOEXEC fcntl() flag do? - Stack Overflow) or directly in open
with O_CLOEXEC
(open(2) - Linux manual page)
Is there anything different I can do so that it actually works properly?
a) don’t start and detach child processes from within sclang
b) open an issue on GitHub and ask to set the FD_CLOEXEC
bit on all files and sockets
c) use Windows :-p