gpt4 book ai didi

java - 从 Java 启动子进程,它不会继承 UNIX 上的文件/端口

转载 作者:行者123 更新时间:2023-11-30 09:41:28 25 4
gpt4 key购买 nike

这个问题类似to this one我搜索过的。

但是,在我的例子中,我想从 Java 启动一个子进程,它不会从父进程 (JVM) 继承文件/端口。这在 Java 中有可能吗?有什么解决方法吗?

从我收集到的信息来看,与 C 不同,Java 似乎没有提供一种方法来使用关闭执行标志 (FD_CLOEXEC) 来标记文件描述符。任何见解都将不胜感激。

谢谢!

最佳答案

您在 Java 中打开的任何文件都会自动标记为 FD_CLOEXEC。如果您在 strace 中运行 JVM,您会看到此输出对应于 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 源代码,我相信您会在 open 之后立即找到一个 fcntl 调用。

关于java - 从 Java 启动子进程,它不会继承 UNIX 上的文件/端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8997643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com