1 / 20
文档名称:

Linux系统编程复习提纲代码.doc

格式:doc   大小:93KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Linux系统编程复习提纲代码.doc

上传人:63229029 2017/4/13 文件大小:93 KB

下载得到文件列表

Linux系统编程复习提纲代码.doc

相关文档

文档介绍

文档介绍:1、利用文件系统调用函数实现 cp 命令,例如./ 当前目录下的 到 #include <> #include <> #include <> #include <> #define BUFFER_SIZE 1024 int main(int argc,char **argv) { FILE *from_fd; FILE *to_fd; long file_len=0; char buffer[BUFFER_SIZE]; char *ptr; /* 判断入参*/ if(argc!=3) { printf("Usage:%s fromfile tofile\n",argv[0]); exit(1); } /* 打开源文件*/ if((from_fd=fopen(argv[1],"rb"))==NULL) { printf("Open %s Error\n",argv[1]); exit(1); } /* 创建目的文件*/ if((to_fd=fopen(argv[2],"wb"))==NULL) { printf("Open %s Error\n",argv[2]); exit(1); } /* 测得文件大小*/ fseek(from_fd,0L,SEEK_END); file_len=ftell(from_fd); fseek(from_fd,0L,SEEK_SET); printf("from file size is=%d\n",file_len); /* 进行文件拷贝*/ while(!feof(from_fd)) { fread(buffer,BUFFER_SIZE,1,from_fd); if(BUFFER_SIZE>=file_len) { fwrite(buffer,file_len,1,to_fd); } else { fwrite(buffer,BUFFER_SIZE,1,to_fd); file_len=file_len-BUFFER_SIZE; } // 写入完成后清空缓冲区 memset(buffer,0, BUFFER_SIZE ); } fclose(from_fd); fclose(to_fd); exit(0); }2 、通过 leek 函数,计算文件大小。#include<sys/> #include<> off_t lseek (int fd,off_t pos,int origin); fd 文件描述符 origin SEEK_CUR: 若 pos 为0 ,返回当前文件位置(相对文件当前读写指针的位置+pos ) SEEK_END: 若 pos 为0 ,设为文件尾部(相对当前文件长度+pos ) SEEK_SET: 若 pos 为0 ,设文件开始(将文件设置成 pos ) P os 文件偏移量返回值:成功返回新文件位置,失败返回-1 运行时,要输入要计算文件的名字,和一个复制用的文件名(可不存在的) #include <> //printf fprintf #include <> //memset #include <> //read write lseek #include <> //exit #include <> //errno 全局变量#include <> //open #define LEN 1024 void mycp(int fd_in,int fd_out) { char buff[LEN] = {0}; int size; int len; // 如果读取成功,将缓冲区数据写入 out 文件 while((size = read(fd_in,buff,sizeof(buff))) > 0){ // 写入数据,如果失败,程序退出 if(write(fd_out,buff,size) != size){ fprintf(stderr,"write error: %s\n", strerror(errno)); exit(1); } // 打印偏移量 len=lseek(fd_in,0,SEEK_CUR); printf(" 读了%d\n",len); // 写入完成后清空缓冲区 memset(buff,0,sizeof(buff)); } if(size < 0){ fprintf(stderr,"read error: %s\n", strerror(errno)); exit(1); } return; } int main(int a