我对 Common Lisp 还很陌生,需要帮助来使用“osicat”系统中的函数。我想要完成的是获取文件的大小。为了实现这一点,我想使用 osicat 系统的函数“stat”返回的结果。在尝试从我启动 sbcl 的同一目录中找到的文件中获取信息时,似乎该函数要花很长时间才能从文件中收集信息,或者它什么都不做并因未知原因而挂起。我不太清楚如何解决这个问题,也不知道是什么导致了这个问题。
以下是我遇到问题之前所采取的操作顺序:
- 打开 Powershell。
- 执行cygwin
- 执行sbcl
- (ql:quickload :osicat)(加载时没有任何提示)
- (包内:osicat-posix)
- (osicat-posix:stat "env.db")
执行最后一个命令后,repl 循环就像挂起一样。我尝试在互联网上搜索任何线索或答案来解释为什么会发生这种情况,但只发现教程给出了相同的说明,这让我很困难。任何见解、线索、提示或帮助将不胜感激。
最佳答案
您的操作顺序没有任何问题,您应该会得到您想要的结果。这是我在 SLIME 中的输出:
CL-USER> (osicat-posix:stat "/etc/passwd")
#<OSICAT-POSIX:STAT {1039159BB3}>
CL-USER> (describe (osicat-posix:stat "/etc/passwd"))
#<OSICAT-POSIX:STAT {103916B4F3}>
[standard-object]
Slots with :INSTANCE allocation:
DEV = 64769
INO = 25166054
MODE = 33188
NLINK = 1
UID = 0
GID = 0
RDEV = 0
SIZE = 2324
BLKSIZE = 4096
BLOCKS = 8
ATIME = 1576246741
MTIME = 1575707407
CTIME = 1575707407
也许,您的问题与 cygwin
交互有关。通过在 strace
下运行 sbcl
,您可能会获得一些有关正在发生的情况的线索。
关于lisp - osicat-posix :stat freeze,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59331698/