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

Linux与macOS下MATLAB copyfile处理符号链接的异常行为问询

问题:MATLAB copyfile 复制含断链目录时行为不稳定?

测试代码 test_copyfile.m 如下:

%test_copyfile.m

function test_copyfile()

system('rm -rf folder*; mkdir folder1; cd folder1; touch a b c d e f g; ln -s d dlink; rm d; cd ..');

success = copyfile('folder1','folder2');
assert(success);

fprintf('\nfolder1:\n');
dir('folder1')

fprintf('\nfolder2:\n');
dir('folder2')

assert(isequal({dir('folder1').name}, {dir('folder2').name}));

return

在Ubuntu 22.04或macOS 13(Intel芯片)的MATLAB R2023b中运行该函数后,folder1 包含文件a、b、c、dlink、e、f、g,但folder2的内容不确定,有时仅含部分文件,有时为空,导致断言失败。多次测试未发现规律,请问该现象是否为预期行为?


解答

这不是预期行为,属于MATLAB copyfile 函数处理**断链(broken symbolic link)**时的bug。

  • 问题根源:测试场景中folder1存在指向已删除文件的断链dlink,copyfile在遍历复制时,处理断链过程中出现内部异常,导致后续文件复制流程随机中断,最终出现复制内容不完整甚至为空的情况。
  • 验证方式:用系统原生命令cp -r folder1 folder2手动复制,能完整保留所有文件和断链,说明问题出在MATLAB的函数实现上。
  • 临时解决办法:替换copyfile调用为系统原生复制命令,修改代码如下:
    % 替代原copyfile行
    system('cp -r folder1 folder2');
    
  • 后续建议:可以向MathWorks官方提交该bug,附上测试代码和运行环境信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:07:43