gpt4 book ai didi

c - 为什么 symlink() 总是打印 symlink failed?

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:44 27 4
gpt4 key购买 nike

我的代码总是打印符号链接(symbolic link)失败,即使它创建了符号链接(symbolic link),为什么会这样?

我正在编写我自己使用的所有核心实用程序,因为我想要体验并且不喜欢现有的实现,我正在研究 ln 并且老实说可能只是做软链接(soft link)并跳过硬链接(hard link)。现在该程序可以运行,但总是打印出我的错误,我不明白为什么。

#include <stdio.h>
#include <unistd.h>

int main(int argc, const char *argv[])
{
short i;

for (i = 1; i < argc; i++) {
if (symlink(argv[1], argv[2]) == -1)
printf("symlink failed");

else
symlink(argv[1], argv[2]);
}
}

最佳答案

您正在遍历程序的每个参数,但尝试在每次迭代时创建从 argv[2]argv[1] 的符号链接(symbolic link)。第一个可能会成功,但任何进一步的尝试都会失败,因为链接已经存在。

您需要仔细考虑 ln 在传递超过两个参数时应该如何表现。 ln -s 的行为比简单地调用 symlink() 更复杂;值得注意的是,当最后一个参数是目录时,它的行为会有所不同。

关于c - 为什么 symlink() 总是打印 symlink failed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57335035/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com