我有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和完全资源继承吗?
答案 0 :(得分:0)
vfork / posix_spawn帮了忙。 将此库与java绑定https://github.com/axiak/java_posix_spawn
一起使用