操作系统上机作业--使用系统调用实现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相关推荐
- 操作系统上机作业--使用系统调用实现mycat
mycat.c的功能与系统cat程序相同 mycat将指定的文件内容输出到屏幕,例子如下: 要求使用系统调用open/read/write/close实现 $ cat /etc/passwd root ...
- 操作系统上机作业--实现mysys(多进程)
mysys.c: 实现函数mysys,用于执行一个系统命令,要求如下 mysys的功能与系统函数system相同,要求用进程管理相关系统调用自己实现一遍 使用fork/exec/wait系统调用实现m ...
- 操作系统上机作业--创建N个线程(多线程)
ring.c: 创建N个线程,它们构成一个环 • 创建N个线程:T1.T2.T3.- TN • T1向T2发送整数1 • T2收到后将整数加1 • T2向T3发送整数2 • T3收到后将整数加1 • ...
- 操作系统上机作业-- 使用信号量解决生产者、计算者、消费者问题(多线程)
pc2.c: 使用信号量解决生产者.计算者.消费者问题 • 功能和前面的实验相同,使用信号量解决 实现思路: 生产者.计算者.消费者三者之间的关系和上一个编程任务一样,不一样的是,将互斥量.条件变量封 ...
- 操作系统上机作业--使用条件变量解决生产者、计算者、消费者问题(多线程)
pc1.c: 使用条件变量解决生产者.计算者.消费者问题 /* • 系统中有3个线程:生产者.计算者.消费者 • 系统中有2个容量为4的缓冲区:buffer1.buffer2 • 生产者生产'a'.' ...
- 操作系统上机作业--多线程排序
sort.c: 多线程排序 • 主线程创建一个辅助线程 • 主线程使用选择排序算法对数组的前半部分排序 • 辅助线程使用选择排序算法对数组的后半部分排序 • 主线程等待辅助线程运行結束后,使用归并排序 ...
- 操作系统上机作业--根据莱布尼兹级数计算PI(2)(多线程)
pi2.c: 使用N个线程根据莱布尼兹级数计算PI • 与上一题类似,但本题更加通用化,能适应N个核心,需要使用线程参数来实现 • 主线程创建N个辅助线程 • 每个辅助线程计算一部分任务,并将结果返回 ...
- 操作系统上机作业--根据莱布尼兹级数计算PI(1)(多线程)
pi1.c: 使用2个线程根据莱布尼兹级数计算PI • 莱布尼兹级数公式: 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... = PI/4 • 主线程创建1个辅助线程 • 主线程计算级数 ...
- 操作系统上机作业--实现shell(2)(多进程)
sh2.c: 实现shell程序,要求在第1版的基础上,添加如下功能 • 实现文件重定向 • $ echo hello >log • $ cat log • Hello 实现思路: 和sh1.c ...
最新文章
- Mac下的比较器工具DeltaWalker的试用期延长法
- R语言扩展包dplyr——数据清洗和整理
- mysql 1084_[LeetCode]1084. 销售分析III(Mysql,having+聚合函数)
- Ubuntu 16.04卸载CUDA 6.5和安装CUDA 8.0
- 怎么使用python中的字典_Python中字典的使用
- JBoss模块很烂,无法在JBoss 7下使用自定义Resteasy / JAX-RS
- 二叉树类型笔试面试题大总结(含代码)
- 全网最全的git命令大全
- Wpf从资源中重用UI元素
- Python Web开发 Django框架下开发一个博客
- 更改Word文档中自带插入公式中的字体解决方案
- Java IO流处理 面试题汇总
- 域控-笔记四(综合应用)
- 编一个程序,将两个字符串连接起来,不要用strcat函数
- Tomcat 服务器搭建
- python随机出100道加法题_python3 随机生成10以内的加法算术题
- LSTM之父最新长文:现代AI和深度学习发展史
- ThinkPHP 手册摘录之(跨模块)调用
- 手机端与PC端在线预览PDF
- win10 激活工具 Re-LoaderByR@1n.exe