• 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相关推荐

  1. 操作系统上机作业--使用系统调用实现mycat

    mycat.c的功能与系统cat程序相同 mycat将指定的文件内容输出到屏幕,例子如下: 要求使用系统调用open/read/write/close实现 $ cat /etc/passwd root ...

  2. 操作系统上机作业--实现mysys(多进程)

    mysys.c: 实现函数mysys,用于执行一个系统命令,要求如下 mysys的功能与系统函数system相同,要求用进程管理相关系统调用自己实现一遍 使用fork/exec/wait系统调用实现m ...

  3. 操作系统上机作业--创建N个线程(多线程)

    ring.c: 创建N个线程,它们构成一个环 • 创建N个线程:T1.T2.T3.- TN • T1向T2发送整数1 • T2收到后将整数加1 • T2向T3发送整数2 • T3收到后将整数加1 • ...

  4. 操作系统上机作业-- 使用信号量解决生产者、计算者、消费者问题(多线程)

    pc2.c: 使用信号量解决生产者.计算者.消费者问题 • 功能和前面的实验相同,使用信号量解决 实现思路: 生产者.计算者.消费者三者之间的关系和上一个编程任务一样,不一样的是,将互斥量.条件变量封 ...

  5. 操作系统上机作业--使用条件变量解决生产者、计算者、消费者问题(多线程)

    pc1.c: 使用条件变量解决生产者.计算者.消费者问题 /* • 系统中有3个线程:生产者.计算者.消费者 • 系统中有2个容量为4的缓冲区:buffer1.buffer2 • 生产者生产'a'.' ...

  6. 操作系统上机作业--多线程排序

    sort.c: 多线程排序 • 主线程创建一个辅助线程 • 主线程使用选择排序算法对数组的前半部分排序 • 辅助线程使用选择排序算法对数组的后半部分排序 • 主线程等待辅助线程运行結束后,使用归并排序 ...

  7. 操作系统上机作业--根据莱布尼兹级数计算PI(2)(多线程)

    pi2.c: 使用N个线程根据莱布尼兹级数计算PI • 与上一题类似,但本题更加通用化,能适应N个核心,需要使用线程参数来实现 • 主线程创建N个辅助线程 • 每个辅助线程计算一部分任务,并将结果返回 ...

  8. 操作系统上机作业--根据莱布尼兹级数计算PI(1)(多线程)

    pi1.c: 使用2个线程根据莱布尼兹级数计算PI • 莱布尼兹级数公式: 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... = PI/4 • 主线程创建1个辅助线程 • 主线程计算级数 ...

  9. 操作系统上机作业--实现shell(2)(多进程)

    sh2.c: 实现shell程序,要求在第1版的基础上,添加如下功能 • 实现文件重定向 • $ echo hello >log • $ cat log • Hello 实现思路: 和sh1.c ...

最新文章

  1. Mac下的比较器工具DeltaWalker的试用期延长法
  2. R语言扩展包dplyr——数据清洗和整理
  3. mysql 1084_[LeetCode]1084. 销售分析III(Mysql,having+聚合函数)
  4. Ubuntu 16.04卸载CUDA 6.5和安装CUDA 8.0
  5. 怎么使用python中的字典_Python中字典的使用
  6. JBoss模块很烂,无法在JBoss 7下使用自定义Resteasy / JAX-RS
  7. 二叉树类型笔试面试题大总结(含代码)
  8. 全网最全的git命令大全
  9. Wpf从资源中重用UI元素
  10. Python Web开发 Django框架下开发一个博客
  11. 更改Word文档中自带插入公式中的字体解决方案
  12. Java IO流处理 面试题汇总
  13. 域控-笔记四(综合应用)
  14. 编一个程序,将两个字符串连接起来,不要用strcat函数
  15. Tomcat 服务器搭建
  16. python随机出100道加法题_python3 随机生成10以内的加法算术题
  17. LSTM之父最新长文:现代AI和深度学习发展史
  18. ThinkPHP 手册摘录之(跨模块)调用
  19. 手机端与PC端在线预览PDF
  20. win10 激活工具 Re-LoaderByR@1n.exe

热门文章

  1. c 解析java byte,深入解析Java编程中面向字节流的一些应用
  2. matlab实验符号计算答案,实验五matlab符号计算
  3. 网站如何快速搭建即时响应客服系统
  4. php最常用方法,php 常用方法
  5. java调用wvsc.exe_c语言 函数的调用方法
  6. flex弹性布局操练2
  7. JS如何禁止别人查看网站源码
  8. “前”方有坑,绕道而行(一)-- H5 CSS
  9. 关于窗口的一些小脚本
  10. Python3.6全栈开发实例[005]