阅读 78

操作系统上机作业--使用系统调用实现mycp

  • mycp.c的功能与系统cp程序相同

  • 将源文件复制到目标文件,例子如下:

  • 要求使用系统调用open/read/write/close实现

$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin ... $ ./mycp /etc/passwd passwd.bak  $ cat passwd.bak root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin 复制代码

实现思路:从main中接受mycp的参数,open源文件,用stat获取文件大小,read源文件,open目标文件,将从源文件中读取的字符写入目标文件中。
实现代码

#include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<unistd.h> #include<sys/stat.h> #include<fcntl.h> int main(int argc,char *argv[]){         int fd;         int fsize;         char *buffer;         struct stat st;         if(argc!=3){                 printf("Error:parameter wrong!\n");                 exit(0);         }         fd=open(argv[1],O_RDONLY);         if(fd<0){                 printf("Error:can't open the read-file!\n");                 exit(0);         }         stat(argv[1],&st);         fsize=st.st_size;         buffer=(char *)malloc((1+fsize)*sizeof(char));         if(!buffer){                 printf("Error:memory wrong!\n");                 exit(0);         }         read(fd,buffer,fsize);         close(fd);         fd=open(argv[2],O_WRONLY|O_CREAT);         if(fd<0){                 printf("Error:can't open the write-file!\n");                 exit(0);         }         write(fd,buffer,fsize);         close(fd);         free(buffer);         return 0; } 复制代码

运行结果
这里写图片描述


作者:timestamp84821
链接:https://juejin.cn/post/7020970104963743781


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐