You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia交互式REPL中脚本未完全退出致端口占用的问题

解决Julia HTTP/WS服务器Ctrl+C后端口占用问题

问题背景

通过julia --project启动REPL,执行include("scripts/main.jl")启动HTTP和WS服务器,按下Ctrl+C返回REPL后,再次运行脚本提示端口已被占用,原因是服务器进程未完全退出。

解决方案

1. 给脚本添加中断信号处理逻辑

修改scripts/main.jl,显式监听SIGINT信号(即Ctrl+C触发的中断),在收到信号时主动关闭服务器实例:

using HTTP, WebSockets

# 替换为你实际的服务器启动代码
http_server = HTTP.serve!(your_handler, "0.0.0.0", 8080)
ws_server = WebSockets.Server(your_ws_handler, "0.0.0.0", 8081)

# 定义中断处理函数
function shutdown_server(signal)
    println("正在关闭服务器...")
    close(http_server)
    close(ws_server)
    exit()
end

# 注册信号监听
signal(SIGINT, shutdown_server)

# 阻塞主线程,避免脚本直接退出
wait()

2. 手动清理占用端口的进程

如果已经出现端口占用,先定位占用端口的进程:

# Linux/macOS系统
lsof -i :<你的端口号>
# Windows系统
netstat -ano | findstr :<你的端口号>

根据输出的PID杀死进程:

# Linux/macOS
kill <PID>
# Windows
taskkill /PID <PID> /F

3. 启动服务器时启用端口复用

在HTTP服务器启动参数中添加reuseaddr=true,允许端口被复用,即使之前的进程未完全释放端口:

HTTP.serve!(your_handler, "0.0.0.0", 8080; reuseaddr=true)

内容的提问来源于stack exchange,提问作者BAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:34:57