Любые файлы, которые вы открываете в Java, автоматически помечаются как FD_CLOEXEC. Если вы запустите JVM в strace
, вы увидите этот вывод, соответствующий вызову FileInputStream.open
:
5926 open("file.txt", O_RDONLY|O_LARGEFILE) = 6
5926 fstat64(6, {st_mode=S_IFREG|0664, st_size=869, ...}) = 0
5926 fcntl64(6, F_GETFD) = 0
5926 fcntl64(6, F_SETFD, FD_CLOEXEC) = 0
Если вы проверите исходный код OpenJDK, я уверен, что вы найдете вызов fcntl
сразу после open
.