文件截取,改名,删除
例1: 文件截短. 将指定的文件截短为指定的长度
mytruncate.c
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc,char *argv[]) { int ret = truncate(argv[1],atoi(argv[2])); ERROR(ret == -1); return 0; }
编译链接执行, 输出如下:
上图中tfile内容被截成指定的长度. 最后一次在7个字符长度上截成9个字符长度, 在后面加了两个0
例2: 文件改名
myrename.c
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc,char *argv[]) { int ret = rename(argv[1],argv[2]); ERROR(ret == -1); return 0; }
编译链接执行, 输出结果如下:
将文件111改名为222
例3: 用remove()函数删除一个目录项
myremove.c
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc,char *argv[]) { int ret = remove(argv[1]); ERROR(ret == -1); return 0; }
编译链接执行, 结果如下:
例4: 用unlink()删除一个目录项
myunlink.c
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc,char *argv[]) { char buf[100]; int fd = open("tmp",O_RDWR | O_CREAT,S_IRWXU); ERROR(fd == -1); int ret = unlink("tmp"); ERROR(ret == -1); ret = write(fd,"hello world",11); ERROR(ret != 11); ret = lseek(fd,0,SEEK_SET); ERROR(ret == -1); ret = read(fd,buf,11); ERROR(ret < 0); buf[ret] = 0; puts(buf); close(fd); return 0; }
编译链接执行, 输出如下: