STINNER Victor <[email protected]> added the comment:
> That's very unlikely to happen. I believe it was added as an opt-in feature
> for some linux compatibility situations. The correct solution is to use
> closefrom(2), as it is the optimal current solution, and in our case, safe to
> use.
If you have like 50k open file descriptors and want to pass fd 50000 to a child
process using Popen(pass_fds={50000}), you will have to call close() 49 997
times: close(3)..close(49999), then closefrom(50001).
For the pass_fds case, being able to enumerate open file descriptors (ex:
fdescfs) is more efficient than closefrom().
Well, the best would be a system call "close all file descriptors except of
<list of fds>", but it's not available yet. Or maybe at least having a system
like close_range(a, b).
In May 2019, the close_range() syscall was in the Linux kernel !
https://lwn.net/Articles/789023/
... but it seems like the feature was not accepted yet.
I'm disappointed that posix_spawn() doesn't implement a feature like Python
subprocess close_fds=True.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue38061>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com