我希望我做错了什么,但似乎kdb无法从命名管道读取数据(至少在Solaris上)。它会阻塞,直到它们被写入,但不会返回任何写入的数据。kdb可以从命名管道读取吗?
我可以创建一个文本文件:
$ echo Mary had a little lamb > lamb.txt
和KDB会很乐意阅读:
q) read0 `:/tmp/lamb.txt
enlist "Mary had a little lamb"
我可以创建一个命名管道:
$ mkfifo lamb.pipe
,并试图阅读从它:
q) read0 `:/tmp/lamb.pipe
将导致kdb阻塞。写管道:
$ cat lamb.txt > lamb.pipe
会导致KDB返回空列表:
()
可以从KDB命名管道读?我应该放弃吗?我不认为这是一个权限的事情(我试图在我的mkfifo
命令上设置-m 777
,但这没有什么区别)。
我很高兴它阻止 - 这似乎是连续流的正确行为 - 但它然后返回空列表,而不是写入的数据。这几乎就像是在等待EOF,然后在该点之前扔掉它所读取的任何东西:s – 2012-02-10 10:45:58
是的,它可能会超时。底层算法将提供答案,因此可能需要发送电子邮件至[email protected]以了解情况。 – algolicious 2012-02-10 11:59:47