完成linux文件编程的初步学习后,使用linux文件编程实现了一两个简单应用。
目标效果
模拟配置文件的参数修改
代码
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> #include <unistd.h> int main(int argc, char **argv) //输入文件名、目标字段、修改值 { if(argc != 4){ printf("error!\n"); exit(-1); } //打开文件 int fd; fd = open(argv[1],O_RDWR); //计算文件大小 int size = lseek(fd,0,SEEK_END); lseek(fd,0,SEEK_SET); //读文件 char *buf = (char *)malloc(size); read(fd,buf,size); //寻找目标字段 char *p = strstr(buf,argv[2]); if(p == NULL){ printf("There is no such field!\n"); exit(-1); } p = p + strlen(argv[2]); *p = *argv[3]; //修改 lseek(fd,0,SEEK_SET); write(fd,buf,size); //关闭文件 close(fd); return 0; }
运行结果
配置文件初始内容
命令行输入
./a.out test.config abc= 9
最终结果
目标效果
具备cp命令相同的效果
代码
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> int main(int argc,char **argv) //输入初始文件名和目的文件名 { int fd_1; int fd_2; if(argc != 3){ printf("error\n"); exit(-1); } //打开初始文件、创建目的文件 fd_1 = open(argv[1],O_RDWR); fd_2 = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600); //计算初始文件大小 int size = lseek(fd_1,0,SEEK_END); //读初始文件 char *buf; buf = (char *)malloc(size); lseek(fd_1,0,SEEK_SET); read(fd_1,buf,size); //将初始文件内容写入目的文件 write(fd_2,buf,size); //关闭文件 close(fd_1); close(fd_2); return 0; }