When using an external library and/or FFI bindings, all non-cloexec file descriptors leak to all new processes spawned with Command::spawn().
This was introduced by the I/O reform because the getdtablesize() loop disappeared.
The getdtablesize() loop could be replaced with a walk_dir() through /proc/self/fd when available (cf. #12148 (comment)).
cc #12148
cc #22678
cc #24237
cc rust-lang/rfcs#941
cc @alexcrichton
cc @aturon