2015-10-03 2 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() идентична стат(), за исключением того, что если путь asymbolic ссылка, то сама ссылка стат-эд, а не файл, который он ссылается.

  • Следующие POSIX макросы определены для проверки типа файла, используя поле st_mode:

  • S_ISLNK (м) символическую ссылку? (Не в POSIX.1-1996.)

Смежные вопросы