Common lisp (SB-SYS:WAIT-UNTIL-FD-6:INPUT NIL NIL)做什么?

Common lisp (SB-SYS:WAIT-UNTIL-FD-6:INPUT NIL NIL)做什么?,common-lisp,sbcl,Common Lisp,Sbcl,我现在正在使用sbcl 1.0.57.0,我的程序在shell中生成恒定的输出,直到在某个点我的程序冻结而没有任何线索 C-C和向下,显示最后一个调用: (SB-SYS:WAIT-UNTIL-FD-USABLE 6 :INPUT NIL NIL) 我重新启动了我的程序并再次尝试,程序再次冻结,C-C关闭显示这个调用是最后一个调用。过了一段时间,我没有测量准确的时间,但应该大约是5分钟左右,程序会持续一小段时间,然后再次冻结 要将调用置于上下文中,请执行以下操作: 跟踪中第一个熟悉的调用是dra

我现在正在使用sbcl 1.0.57.0,我的程序在shell中生成恒定的输出,直到在某个点我的程序冻结而没有任何线索

C-C和向下,显示最后一个调用:

(SB-SYS:WAIT-UNTIL-FD-USABLE 6 :INPUT NIL NIL)
我重新启动了我的程序并再次尝试,程序再次冻结,C-C关闭显示这个调用是最后一个调用。过了一段时间,我没有测量准确的时间,但应该大约是5分钟左右,程序会持续一小段时间,然后再次冻结

要将调用置于上下文中,请执行以下操作: 跟踪中第一个熟悉的调用是
drakma:http请求
。但是,自己使用的完整调用不会导致冻结

现在我想知道这个调用实际上做了什么,这是否是程序冻结的原因

由于此问题的第二部分要求您在电话与我的问题无关时保持洞察力,因此我的最后一个问题是:此电话有什么作用?(描述“sb系统:等待fd可用”)给出:

调用的目的似乎是等待(没有任何超时) 直到文件描述符6可用,但问题可能是
函数是用4个参数调用的,而它需要2个或3个参数?

虽然从技术上讲我没有问这个问题,但我想添加关于这个主题的最新信息,以防其他人在类似的上下文中查找此问题

使用
drakma:http请求时出现问题。我现在能够为一个特定的请求编写概念证明,并将其作为一个问题发布在drakma github页面上。drakma似乎没有在sbcl中提供超时,因此在这种情况下,
(SB-SYS:WAIT-UNTIL-FD-available 6:INPUT NIL NIL)
在没有超时的情况下等待信息到达:

因为我没有调用此方法,所以我无法确定。但由于程序没有产生任何错误,我认为实际上更可能是函数发生了更改,您引用了一个旧的API。你能提供你的来源的链接吗?我引用的SB-SYS:WAIT-TILL-FD-ASABLE的描述来自sbcl 1.0.40.0。在sbcl 1.1.0中,函数具有以下签名和文档
(取消运行等待直到fd可用(fd方向和可选超时(serve events t))
如果serve-events为true(默认),则在等待时为其他fd上的事件提供服务。
WAIT-UNTIL-FD-USABLE names a compiled function:
Lambda-list: (FD DIRECTION &OPTIONAL TIMEOUT)
[...]
Documentation:
Wait until FD is usable for DIRECTION. DIRECTION should be either :INPUT
or :OUTPUT
TIMEOUT, if supplied, is the number of seconds to wait before giving up.