阅读量:0
目录
1> 使用文件IO完成,将源文件中的所有内容进行加密(大写转小写、小写转大写)后写入目标文件中,源文件内容不变
1> 使用文件IO完成,将源文件中的所有内容进行加密(大写转小写、小写转大写)后写入目标文件中,源文件内容不变
遇到问题:
在把转变好的内容存入到目标文件中的时候,写成了如下代码:
write(destfd,buf,src); //正确 write(destfd,buf,sizeof(buf)) //错误读取了内容,无论读取了多少个数据,write都会写入sizeof(buf)个大小的数据,造成错误。应该读取返回的src,这就是read读取到的数据数量
#include <myhead.h> int main(int argc, const char *argv[]) { //定义两个变量用于存储文件描述符 int srcfd = -1,destfd = -1; //以只读的形式打开源文件 if((srcfd = open("./src.txt",O_RDONLY)) == -1) { perror("src open error"); return -1; } //以只写的形式打开目标文件 if((destfd = open("./dest.txt",O_WRONLY|O_CREAT|O_TRUNC,0664)) == -1) { perror("dest open error"); return -1; } //定义一个搬运工 char buf[10] = ""; //循环读取源文件内容写入到目标文件,并且判断大小写 while(1) { //判断是否读取到了内容,如果返回值为0,则说明已经读完 int src = read(srcfd,buf,sizeof(buf)); if(src == 0) { break; } //判断buf里面读取出来的是小写还是大写,进行ascii码的转换 for(int i = 0;i < src;i++) { if(buf[i] >= 'a' && buf[i] <= 'z') { buf[i] -= 32; } else if(buf[i] >= 'A' && buf[i] <= 'Z') { buf[i] += 32; } } //把转变好的内容存入目标文件中 write(destfd,buf,src); } //关闭文件 close(srcfd); close(destfd); return 0; }
输出结果如下:可以看出文件里面的大小写已经发生转变并且成功从源文件内写入到目标文件内
2、并发和并行的区别
1、并发:并发在一台处理器上“同时”处理多个任务。
2、并行:并行在多台处理器上同时处理多个任务。
3、什么是进程
狭义定义:进程就是一段程序的执行过程。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
4、进程和程序的区别
进程是程序的一次执行过程,是会动态的创建和消亡的;程序是代码的集合,可以长期保存
一个进程可以执行一个或几个程序,一个程序也可以构成多个进程。进程可以创建进程,而程序不能形成新的程序
5、进程的状态有哪些
1) 运行状态:进程正在处理器上上运行。在单处理器环境下,每个时刻最多只有一个进程处于运行状态。
2) 就绪状态:进程已处于准备运行状态,即进程获得了除了处理器之外的一切所需资源,一旦得到处理器即可运行。
3) 阻塞状态:又称为等待状态,进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理器)或等待输入/输出完成。即使处理器空闲,该进程也不能运行。
4) 创建状态:进程正在被创建,尚未到就绪状态。
5) 终止状态:进程正在从系统中消失。可能是进程正常结束或其他原因中断退出运行。
6、系统中的多个进程的调度机制都有哪些
- 排队器
将所有就绪的进程按照一定的策略排成一个或多个队列,便于调出程序最快找到 - 分派器
将调度选择的进程从就绪队列中取出,进行分派器到新进程的上下文切换并分配处理机。 - 上下文切换器
切换分派器和当前程序的上下文。
7、思维导图