开源llama.cpp Releases·原文 2026年10月1日本站收录 2026年10月2日

llama.cpp b11299修复CLI退出行为:Windows不再向控制台广播Ctrl+C

该版本让CLI在stdin到达EOF时直接退出,并移除控制台范围的Ctrl+C广播,避免误杀同一控制台下其他进程;同时修复单独输入“/”被误判为EOF的问题。

AI解读:这次更新修的是一个挺隐蔽的坑:Windows上llama.cpp的命令行工具在stdin读到EOF时,会给整个控制台广播CTRL_C_EVENT,结果把挂在同一个控制台里的其他进程一起干掉,比如监管它的agent。b11299直接去掉了这个广播,两个平台现在都只是返回一次空读取。

对POSIX和高级输入读取器来说,旧行为更尴尬——不会退出,而是不停刷提示符。现在统一把空读取当成EOF处理,聊天循环和模型选择都会正常结束。

还顺手补了一个小bug:单独输入一个“/”以前会被当成空读取、进而误判为EOF;现在会保留它的换行。mtmd-cli此前依赖被移除的广播才能停止,这个版本也让它自己在EOF时退出。

llama.cpp发布b11299,主要改动是修复CLI在stdin到达EOF时的退出行为(PR #29722)。根据发布说明,在Windows上,简单输入读取器会在stdin到达EOF时向所有连接到该控制台的进程发送CTRL_C_EVENT,可能杀死无关进程,例如监管它的agent。

该版本移除了这一广播,使Windows和POSIX两端都只返回一次空读取,并在聊天循环和模型选择中把空读取视为EOF。发布说明给出的理由是:用户提交的一行总是以换行符结尾。

发布说明还提到,旧行为下CLI之所以会停止,靠的正是这个自己触发的SIGINT;在POSIX平台以及使用高级读取器时,它会一直循环打印提示符。

同一PR另有两处修复:单独输入一个“/”此前会变成空读取并被当作EOF,现在会保留其末尾换行;mtmd-cli此前只能通过被移除的广播停止,现在改为在EOF时停止。

信息来源

llama.cpp Releases原始来源