来自 java 的派生进程继承了 FreeBSD 上的父套接字
Spawned process from java inherits parent socket on FreeBSD
我有 Spring (SprintBoot) 应用程序,作为服务运行并在 FreeBSD 上侦听端口 80。
$ sockstat -4 -l | grep 80
root java 98931 30 tcp4 6 *:80 *:*
我正在从我的服务中启动另一个服务(例如 samba),如下所示:
Runtime.getRuntime().exec("/usr/sbin/service samba_server start")
得到这个:
$ sockstat -4 -l | grep 80
root smbd 99735 30 tcp4 6 *:80 *:*
root nmbd 99730 30 tcp4 6 *:80 *:*
root java 98931 30 tcp4 6 *:80 *:*
与其他服务相同。杀死我的服务后,端口 80 仍然被占用。为什么会这样? exec() 是否使用具有完整资源继承的 fork?
vfork / posix_spawn 帮助。
将此库与 java 绑定 https://github.com/axiak/java_posix_spawn
结合使用
我有 Spring (SprintBoot) 应用程序,作为服务运行并在 FreeBSD 上侦听端口 80。
$ sockstat -4 -l | grep 80
root java 98931 30 tcp4 6 *:80 *:*
我正在从我的服务中启动另一个服务(例如 samba),如下所示:
Runtime.getRuntime().exec("/usr/sbin/service samba_server start")
得到这个:
$ sockstat -4 -l | grep 80
root smbd 99735 30 tcp4 6 *:80 *:*
root nmbd 99730 30 tcp4 6 *:80 *:*
root java 98931 30 tcp4 6 *:80 *:*
与其他服务相同。杀死我的服务后,端口 80 仍然被占用。为什么会这样? exec() 是否使用具有完整资源继承的 fork?
vfork / posix_spawn 帮助。 将此库与 java 绑定 https://github.com/axiak/java_posix_spawn
结合使用