lisp - osicat-posix :stat freeze

标签 lisp common-lisp read-eval-print-loop sbcl

我对 Common Lisp 还很陌生,需要帮助来使用“osicat”系统中的函数。我想要完成的是获取文件的大小。为了实现这一点,我想使用 osicat 系统的函数“stat”返回的结果。在尝试从我启动 sbcl 的同一目录中找到的文件中获取信息时,似乎该函数要花很长时间才能从文件中收集信息,或者它什么都不做并因未知原因而挂起。我不太清楚如何解决这个问题,也不知道是什么导致了这个问题。

以下是我遇到问题之前所采取的操作顺序:

  1. 打开 Powershell。
  2. 执行cygwin
  3. 执行sbcl
  4. (ql:quickload :osicat)(加载时没有任何提示)
  5. (包内:osicat-posix)
  6. (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/

相关文章:

variables - 函数名称上的未绑定(bind)变量

lisp - 整数lisp的最小值

scheme - 是否有与 SBCL 的运行程序等效的方案?

scala - 如何恢复(垃圾收集)在 scala repl 中分配的内存?

scala - 如何使包可用于 Scala REPL?

LISP 编程考试复习题

scheme - 如何处理在执行 sicp 练习 4.9 时产生的这个错误?

使用 Racket 宏动态定义符号和宏

Clojure:相当于 Common Lisp 中的 "do"

scala - 如何在 Scala REPL 中回显用户输入?