1、fork复制进程:
pid_t pid=fork(&a);
文件操作的系统调用:open read write close
2、父进程打开的文件fork后,子进程中使用
3、先打开文件再进行复制,父进程和子进程轮流对文件进行操作,共享文件
4、先复制再到开文件,父进程和子进程分别对文件进行操作
5、文件描述符
6、文件表 1024
7、 文件表:
第一行列:下标
- 标准输入
- 标注输出
- 标准错误输出
- 文件
8、每一个进程都会有一个进程控制块PCB,是一个结构体,有多少个进程就有多少个进程控制块
9、进程复制:先复制进程控制块,再复制进程
10、系统调用(2)和库函数(3)的区别:
库函数的是实现在库里,属于用户自己的代码,系统调用就是内核中的函数,编译内核的时候就实现了他,系统调用的函数用户可以指定,内核中的函数,用户无法指定
- 系统调用是一个桥梁,一旦使用就会从用户态切换到内核
- 进程替换:把一个进程替换成另外一个进程
- fork+exec复制再替换,把父进程的信息传递给子进程,直接创造需要填充一些信息
- execl(库函数) execl(“”路径”,”ps”,”-f”,(char*)0);
- execlp(库函数) execlp(“ps”,”ps”,”-f”,(char*)0);//放在环境变量中
- execve(库函数)
- execv(库函数)
- execvp(库函数)
- execve 系统调用//都是用库函数去调用execve
执行成功没有返回值,直接从替换成功的地方终止,不成功会继续执行