我的代码总是打印symlink失败,即使它创建了symlink,为什么会发生这种情况?
我写的所有核心UTI我自己使用,因为我想要的经验,不喜欢存在的实现,我在LN工作,老实说,可能只是做软链接,跳过硬链接。现在程序工作了,但总是打印我的错误,我不知道为什么。

#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]的符号链接。第一个可能成功,但是任何进一步的尝试总是失败,因为链接已经存在。
当传递两个以上的参数时,您需要仔细考虑ln的行为。ln -s的行为比简单调用symlink()更复杂;值得注意的是,当最后一个参数是目录时,它的行为不同。

10-07 22:32