操作系统上机作业--使用系统调用实现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;
}

运行结果
这里写图片描述
欢迎留言交流。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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

mysys.c: 实现函数mysys&#xff0c;用于执行一个系统命令&#xff0c;要求如下mysys的功能与系统函数system相同&#xff0c;要求用进程管理相关系统调用自己实现一遍使用fork/exec/wait系统调用实现mysys不能通过调用系统函数system实现mysys 测试程序 #include <stdio.…

android 透明变成白色,android – 状态栏不透明但是白色

为了用anko DSL测试kotlin我决定在最后一个android studio ide(2.1.3)中使用kotlin插件(1.0.3)和最新的anko库(0.9)开始一个新的proyect我使用默认的proyect Navigation Drawer Activity,所以我只需要将主xml转换为anko.这是xml&#xff1a;xmlns:android"http://schemas.…

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

sh1.c: 实现shell程序&#xff0c;要求具备如下功能支持命令参数 $ echo arg1 arg2 arg3 $ ls /bin /usr/bin /home 实现内置命令cd、pwd、exit $ cd /bin $ pwd /bin 实现思路&#xff1a;在获取命令字符串后&#xff0c;用strtok函数对字符串进行处理&#xff0c;获取参数…

当执行游戏0xc000007b错误的解决方法

如图&#xff0c;这个错误使无数玩家烦恼。 出现这个错误&#xff0c;可能是硬件的问题&#xff0c;也可能是软件的问题。可是&#xff0c;因为硬件引起该问题的概率非常小&#xff0c;而且除了更换硬件之外没有更好的解决方法&#xff0c;因此本文将具体介绍怎样通过软件解决此…

android触屏音文件地址,Android音视频-音频采集

Android的音视频开发是我暂定的一个职业发展的一个方向&#xff0c;通过自学记录一些记了又忘记的知识。音频基础知识采样率(samplerate)蓝色代表模拟音频信号&#xff0c;红色的点代表采样得到的量化数值。采用就是把模拟信号数字化的过程&#xff0c;不仅仅是音频需要采样&am…

平衡二叉树,AVL树之图解篇

学习过了二叉查找树&#xff0c;想必大家有遇到一个问题。例如&#xff0c;将一个数组{1,2,3,4}依次插入树的时候&#xff0c;形成了图1的情况。有建立树与没建立树对于数据的增删查改已经没有了任何帮助&#xff0c;反而增添了维护的成本。而只有建立的树如图2&#xff0c;才能…

盒子模型的总结

转载于:https://www.cnblogs.com/zy2012/p/3725677.html

maven generating project in batch mode hang

现象&#xff1a; 执行 archetype:generate 的时候&#xff0c;会产生[INFO] Generating project in Batch mode原因是&#xff1a;网速问题&#xff0c; 解决方法&#xff1a; 设置maven不要从远程服务器上获取catalog&#xff0c;增加参数-DarchetypeCataloginternal 如何在i…

微博 Android 启动广告,使用Xposed去除微博国际版的启动广告

本文同步更新于旺仔的个人博客&#xff0c;访问可能有点慢&#xff0c;多刷新几次。前面有篇文章已经介绍了如何创建Xposed模块的文章了&#xff0c;这篇就让我们来实现一个简单的去除启动广告的功能吧。起因为什么要是要去掉微博国际版的开屏广告呢&#xff0c;因为广告烦人啊…

linux命令:vim文件操作命令、新建用户,查看用户列表,chown命令

命令 简单说明 :w 保存编辑后的文件内容&#xff0c;但不退出vim编辑器。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中。 :w! 强制写文件&#xff0c;即强制覆盖原有文件。如果原有文件的访问权限不允许写入文件&#xff0c;例如&#xff0c;原有的文件…

cocos2d-x android 环境搭配,cocos2d-x Android环境配置问题和解决方法

1.前提&#xff1a;下载安装Cygwin,并已经在cygwin\home\admin(计算机用户名)下的.bash_profile中完成如下配置&#xff1a;NDK_ROOT /cygdrive/d/cocos2dxdev/andrid-ndk-r8e//NDK安装位置export NDK_ROOT问题&#xff1a;运行cygwin.exe.录入如下的第一行数据后&#xff0c;没…

栈的应用--括号匹配的检验

算法中设置一个栈&#xff0c;每次读入一个括号&#xff0c;若是右括号&#xff0c;则或者与置于栈顶的括号匹配&#xff0c;或者是不合法的情况&#xff0c;若是左括号&#xff0c;则入栈。若算法结束&#xff0c;栈是空的&#xff0c;则括号合法。 括号匹配函数 Status bra…

node.js 初体验

node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为《Nodejs初阶之express》 ~ 2014/09/24 更新《Express 4.X 启航指南》 欢迎阅读和评论:) 最近写的文章收到许多朋友的反馈&#xff0c;感谢大家的支持和建议&#…

Linux内核3.0移植并基于Initramfs根文件系统启动

Linux内核移植与启动 Target borad&#xff1a;FL2440 Bootloader&#xff1a;U-boot-2010.09 交叉编译器&#xff1a;buildroot-2012.08 1.linux内核基础知识 首先&#xff0c;磨刀不误砍柴工。在动手进行linux内核移植之前&#xff0c;我们有必要对linux内核进行一定的了解。…

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

sh2.c: 实现shell程序&#xff0c;要求在第1版的基础上&#xff0c;添加如下功能 • 实现文件重定向 • $ echo hello >log • $ cat log • Hello 实现思路&#xff1a; 和sh1.c相比&#xff0c;主要是修改了cmd函数的实现过程。通过循环找出重定向符号"&g…

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

pi1.c: 使用2个线程根据莱布尼兹级数计算PI • 莱布尼兹级数公式: 1 - 1/3 1/5 - 1/7 1/9 - ... PI/4 • 主线程创建1个辅助线程 • 主线程计算级数的前半部分 • 辅助线程计算级数的后半部分 • 主线程等待辅助线程运行結束后,将前半部分和后半部分相加实现思路&#xff1…

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

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

数组以及冒泡排序

数组 1、概念&#xff1a;可以帮我一次声明多个同类型的变量&#xff0c;这些变量再内存中是连续存储的。 2、声明语法&#xff1a;数据类型[] 数组名 new 数据类型[数组长度] 数组长度&#xff1a;一次要声明的同类型的变量个数。是在定义这个数组的时候就确定了&#xf…

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

sort.c: 多线程排序 • 主线程创建一个辅助线程 • 主线程使用选择排序算法对数组的前半部分排序 • 辅助线程使用选择排序算法对数组的后半部分排序 • 主线程等待辅助线程运行結束后,使用归并排序算法归并数组的前半部分和后半部分 实现思路&#xff1a; ARRAY_CO…

jdk5下载链接

查看jdk版本 java -versionJDK下载 最新版本http://www.oracle.com/technetwork/java/javase/downloads/index.htmlJDK下载 版本1.5.22http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5-419410.html#jdk-1.5.0_22-oth-JPR JDK…