gpt4 book ai didi

c - 如何从 C 程序在 Linux 中创建硬链接(hard link)

转载 作者:太空狗 更新时间:2023-10-29 11:24:40 26 4
gpt4 key购买 nike

我们知道我们可以在 Linux 中使用 ln file1 file2 创建硬链接(hard link),这将使 file2 成为 file1 的硬链接(hard link)。

但是,当我尝试使用 C 程序执行此操作时,我遇到了问题。下面是 C 代码。

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

int main(int argc, char *argv[])
{
if ((strcmp (argv[1],"ln")) == 0 )
{
char *myargs[4];
myargs[0] = "ln";
myargs[1] = argv[3];
myargs[2] = argv[4];
myargs[3] = NULL;
execvp(myargs[0], myargs);
printf("Unreachable code\n");
}
return 0;
}

用 gcc 编译这个程序后,我按如下方式运行它。

$ ./a.out ln file1 file2
ln: failed to access ‘file2’: No such file or directory
$

此处 file1 存在,file2 是所需的硬链接(hard link)。

谁能指出我哪里出错了。

谢谢。

最佳答案

Shell 脚本知识很少能很好地转移到 C 编程中。这是您应该改用的 man 2 link:

NAME
link - make a new name for a file

SYNOPSIS
#include <unistd.h>

int link(const char *oldpath, const char *newpath);

使用 C api 而不是外部 shell 工具的好处包括显着提高性能和消除标志注入(inject)。

关于c - 如何从 C 程序在 Linux 中创建硬链接(hard link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479312/

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