posicat-posix:stat冻结

问题描述 投票:1回答:1

我对Common Lisp还是很陌生,在使用“ osicat”系统中的功能时需要帮助。我要完成的工作是获取文件的大小。为此,我想使用osicat系统的“ stat”函数返回的结果。尝试从与我在其中启动sbcl的目录相同的文件中获取信息后,似乎该函数要么花了很多时间从文件中收集信息,要么它什么都不做并且由于未知原因挂起。我不太了解如何解决此问题,也不知道是什么原因导致了此问题。

这里是我遇到问题之前采取的行动顺序:

  1. 打开Powershell。
  2. 执行cygwin
  3. 执行sbcl
  4. ((ql:quickload:osicat)(加载时没有任何抱怨)
  5. (in-package:osicat-posix)
  6. (osicat-posix:stat“ env.db”)

执行最后一条命令后,好像repl循环挂起。我尝试在互联网上搜索有关可能发生这种情况的任何线索或答案,但只找到了教程,它们给出了同样的指示,这使我很难受。任何见解,线索,提示或帮助将不胜感激。

lisp common-lisp read-eval-print-loop sbcl
1个回答
0
投票

您的操作顺序没有错,您应该期望得到想要的结果。这是我在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交互有关。通过在sbcl下运行strace,您可能会得到一些线索。

© www.soinside.com 2019 - 2024. All rights reserved.