如何以编程方式将Linux符号链接移动到C中的其他文件系统(副本)?

Dux*_*uxa 0 c symlink

named()C函数在整个文件系统中均不起作用。因此,我可以通过打开副本,读取它们并将它们写入新副本然后取消链接来通过副本移动文件。但是我很难使它与符号链接一起使用。(这个想法是移动一个文件夹,其中包含一堆其他文件/文件夹/符号链接等)。基本上在C中实现mv命令。

open(file, O_RDONLY)
while ((c = read(source_descriptor, buf, SIZE)) > 0){
        write(d, buf, c);
}
unlink file;
Run Code Online (Sandbox Code Playgroud)

适用于普通文件(我还有另一个功能可以正常处理目录)。但是每当它到达一个符号链接时,我都会感到恐惧,吐出这样的文件或目录

我可以通过d_type来检测它是否是一个符号链接,但是我不确定一旦有符号链接就如何读取/复制它,因为普通文件复制似乎不适用于符号链接,因为open()拒绝打开它们。

mel*_*ene 5

一旦确定要处理符号链接(可以使用来完成lstat()),您可以使用读取符号目录的内容readlink()并在目标位置重新创建它symlink()

另请参阅man 7 symlink