14-操作系统上的进程 (forkexecveexit)
14-操作系统上的进程 (fork/execve/exit)
立即复制状态机
包括
所有
信息的完整拷贝
- 每一个字节的内存
- 打开的文件 (共享)
- ……
- 复制失败返回 -1
- errno 会返回错误原因 (man fork)
如何区分两个状态机?
- 新创建进程返回 0
- 执行 fork 的进程返回子进程的进程号
系统调用的返回值放在rax中
1 | f(){ |
printf缓冲区在每一个进程的内存里,fork会一起复制
遇到了粘贴时乱码问题
execve把当前的进程重置成一个可执行文件描述状态机的初始状态
第三个参数是环境变量
fork默认直接把环境变量会继承
strace的使用
./demo当前目录下的程序