2015-10-03 112 views
2

如何測試路徑名是否是sbcl中的符號鏈接?sbcl確定是否符號鏈接

CL-USER> (apropos "syml") 
:CLASSIFY-SYMLINKS (bound) 
:RESOLVE-SYMLINKS (bound) 
:SYMLINK (bound) 
SB-IMPL::CLASSIFY-SYMLINKS 
SB-IMPL::RESOLVE-PROBLEMATIC-SYMLINK 
SB-IMPL::RESOLVE-SYMLINKS 
SB-POSIX:SYMLINK (fbound) 
UIOP/FILESYSTEM:*RESOLVE-SYMLINKS* (bound) 
UIOP/FILESYSTEM:RESOLVE-SYMLINKS (fbound) 
UIOP/FILESYSTEM:RESOLVE-SYMLINKS* (fbound) 
UTIL::CLASSIFY-SYMLINKS 
UTIL::SYMLINK 
; No value 

這些都沒有用處。 classify-symlinks似乎是一個關鍵字。

回答

3

TL; DR

(defun symlinkp (pathname) 
    (sb-posix:s-islnk (sb-posix:stat-mode (sb-posix:lstat pathname)))) 

要回答一個人首先要問的問題,一個人如何確定的東西(文件描述符我相信)是POSIX中的符號鏈接。男人2統計到營救。的手冊頁

  • LSTAT()是相同的STAT(),所不同的是,如果路徑是asymbolic鏈接,則鏈接本身是STAT-ED,而不是它是指該文件。

  • 以下POSIX宏定義使用st_mode字段來檢查文件類型:

  • S_ISLNK(M)的符號鏈接? (不在POSIX.1-1996中。)