1> 使用文件IO完成,将源文件中的所有内容进行加密(大写转小写、小写转大写)后写入目标文件中
源文件内容不变
#include<myhead.h>
int main(int argc, const char *argv[])
{
//判断传入的是否是两个文件
if(argc!=3)
{
write(2,"input file error\n",sizeof("input file error\n"));
return -1;
}
//以只读的形式打开源文件
int srcfd=open(argv[1],O_RDONLY);
if(srcfd==-1)
{
perror("open srcfile error");
return -1;
}
//以只写的形式打开目标文件
int destfd=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0664);
if(destfd==-1)
{
perror("open drcfile error");
return -1;
}
//定义搬运工
char buf[128]="";
while(1)
{
int src=read(srcfd,buf,sizeof(buf));
if(src==0)
{
break;
}
//遍历buf进行大小写转换
for(int i=0;buf[i]!='\0';i++)
{
if(buf[i]>='a'&&buf[i]<'z')
{
buf[i]=buf[i]-32;
}
else if(buf[i]>='A'&&buf[i]<='Z')
{
buf[i]=buf[i]+32;
}
}
//将转换后的数据写入到新文件中
write(destfd,buf,src);
}
printf("加密完成\n");
//关闭文件
close(srcfd);
close(destfd);
return 0;
}
2> 查资料了解以下概念:
1.并发和并行的区别
并发是对于单个cpu来说,在一个是个只能一个进程运行,但是线程的切换时间则是减少到纳
秒数量级,多个任务不停的来回切换并行是对于多个CPU来说,多个进程同时运行
区别;并行的“同时“是同一时刻可以多个任务在运行(处于running),并发的“同时“是经过不同
线程快速切换2.什么是进程
进程就是程序的一次执行过程,进程是正在执行的任务,是一个动态的过程,有声明周期,进程是计算机资源分配的最小单位,计算机会给每个进程分配4G的虚拟内存,其中0~3G内存是进程独立的,3~4G内核空间是共享的。进程在内核空间,会有一个task_struct结构体来表示,比如包含了PCB(进程控制块),进程可以被计算机调度:时间片轮询,上下文切换
3.进程和程序的区别
进程是正在执行的任务,是一个动态的过程,而程序是可执行代码,是静态的
4.进程的状态有哪些
主状态
D 不可中断的休眠状态
R 运行态
S 可中断的睡眠状态
T 通过信号进入停止状态
t 调试的停止态
w 已经弃用状态
x 死亡态,不可见状态
z 僵尸态,子进程死了,父进程不为其收尸。
附加态
< 高优先级的进程
N 低优先级的进程
L 所在内存中的进程
s 会话组组长
l 包含多线程的进程
+前台运行的进程,一个终端只能有一个前台进程,可以有多个后台进程
5.系统中的多个进程的调度机制都有哪些
1.先来先服务调度算法
2.短作业(进程)优先调度算法3.高优先权优先调度算法
4.高响应比优先调度算法
5.时间片轮转法
6.多级反馈队列调度算法