我正在尝试使用sendfile()
来实施复制程序。
然而,当我尝试复制目录时,它失败了。 Linux中的目录不是特殊的文件类型吗?
这是我现在使用的代码。它是从StackOverflow的另一个答案中复制的。
int copy_file(const char *to, const char *from) {
int read_fd; int write_fd;
struct stat stat_buf;
off_t offset = 0;
/* Open the input file. */
read_fd = open(from, O_RDONLY);
/* Stat the input file to obtain its size. */
fstat (read_fd, &stat_buf);
/* Open the output file for writing, with the same permissions as the source file. */
write_fd = open(to, O_WRONLY | O_CREAT, stat_buf.st_mode);
/* Blast the bytes from one file to the other. */
int err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size);
/* Close up. */
close (read_fd);
close (write_fd);
return err;
}
附加
我得到的返回值是-1。我有一个文件,而不是目录,它有to
路径。
我正在使用Ubuntu 12.04,64位。
uname -r
的输出为3.11.0-20-generic
。
答案 0 :(得分:0)
这是linux中copy命令的实现。请关注此。
答案 1 :(得分:0)
您无法传输此类目录。虽然从技术上讲,目录是某些Unices上的一种文件,但其内容不能移植到另一个文件系统,甚至不能移植到同一文件系统中的另一个目录。由于这个原因和其他原因,系统不允许您将目录视为另一个文件。