You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅使用Racket创建文件硬链接?

在Racket中创建文件硬链接的纯实现方案

Racket标准库的make-file-or-directory-link确实只支持创建符号链接,没有直接提供创建硬链接的内置函数。不过在*nix环境下,你可以通过Racket的FFI(Foreign Function Interface)直接调用系统的link()函数,实现纯Racket的硬链接创建方案,无需依赖system调用Shell。

以下是具体的实现代码:

#lang racket/base

(require ffi/unsafe
         ffi/unsafe/define)

;; 绑定*nix系统的link()函数
(define-ffi-definer define-link (ffi-lib #f))
(define-link link (_fun _string _string -> _int))

(define (make-hard-link src-path dest-path)
  (define result (link (path->string src-path) (path->string dest-path)))
  (when (= result -1)
    (error 'make-hard-link "Failed to create hard link: ~a" (strerror (errno))))
  (void))

使用说明

  • 调用(make-hard-link "source-file.txt" "hard-link.txt")即可创建硬链接,参数可以是字符串或Racket路径对象。
  • 如果创建失败,函数会抛出包含系统错误信息的异常,方便排查问题(比如源文件不存在、权限不足等)。

这个方案完全基于Racket自身的FFI机制,不需要调用外部Shell命令,符合你想要的纯Racket实现需求。

内容的提问来源于stack exchange,提问作者user28972687

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:32:07