如何在Common Lisp中获取Disk Space / free / total

时间:2014-12-21 01:07:28

标签: common-lisp space disk

似乎在Common Lisp中没有标准函数可以使用/ free / total of Disk space。

Linux / Mac中有statvfs.h,Windows中有适用于C / C ++的GetDiskFreeSpaceEx函数。

2 个答案:

答案 0 :(得分:2)

就个人而言,它会调用可执行文件来使用库来执行此操作。 例如,使用IOLib调用df -h。 但这不是可移植的(特别是IOLib,但还有其他库),你必须解析命令的输出。

这就是我喜欢具有“机器可读”输出的程序的一个原因:你可以通过编程方式粘贴它们(例如shell脚本)。

另一种方法是实际调用这些c函数,使用cffi或uffi(ffi代表外部函数接口),但我没有使用过,所以我不能说太多。

哦,在quickdocs.org上搜索,可能有一个库正是为了这个,或者只是为了访问操作系统的API。

答案 1 :(得分:0)

我使用statvfs编写了一个新项目cl-diskspace,以获取Common Lisp中的磁盘总数/可用/可用空间。支持Mac / Linux / Windows。

更新:2015-07-11现在支持Windows!感谢pjb,Guthur,Fare,| 3b |

使用QuickLisp安装cl-diskspace:

$ git clone https://github.com/muyinliu/cl-diskspace.git
$ cp -r cl-diskspace ~/quicklisp/local-projects/

使用QuickLisp加载cl-diskspace:

(ql:quickload 'cl-diskspace)

cl-diskspace的使用:

获取磁盘空间信息

(diskspace:disk-space "/")

会得到这样的东西:

127175917568
16509661184
16247517184

意味着总空间为118.44G,可用空间为15.38G,可用空间为15.13G

获取磁盘总空间

(diskspace:disk-total-space "/")

会得到这样的东西:

127175917568

获取磁盘空间

(diskspace:disk-free-space "/")

会得到这样的东西:

16509661184

获取磁盘可用空间

(diskspace:disk-available-space "/")

会得到这样的东西:

16247517184