cp -- 1




通常我们复制一个文件的过程是先read后write,但是,UNIX系统具有空洞文件的特殊情况,因此不能简单地使用这种方法,否则所有的空洞会被\0填充而使得目标文件比源文件大一些(因为空洞的被填充),下面是我的代码(有参考系统命令cp的源码):#include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <string.h> #include <sys/stat.h> int main () { int rfd = open ("holefile", O_RDONLY); int wfd = open ("cpholefile", O_WRONLY | O_CREAT); int res; struct stat statbuf; if (fstat(rfd, &statbuf) < 0) { perror ("fstat"); return -1; } if (statbuf.st_size <= statbuf.st_blocks * 512) {
#读书笔记    #技术帖    #linux    #unix   



京ICP备15018585号