欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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

发布时间:2023/12/1 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 操作系统上机作业--使用系统调用实现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; }

运行结果

欢迎留言交流。。。。

总结

以上是生活随笔为你收集整理的操作系统上机作业--使用系统调用实现mycp的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。