进程控制:创建,退出,等待,替换
创建:
pid_t fork();----通过复制父进程创建一个子进程-
----父子进程代码共享,数据独有
返回值:错误返回-1,对于父进程返回值大于0-子进程pid,对于子进程返回0
写时拷贝技术:创建子进程后,子进程与父进程各自有自己的虚拟地址空间,但是数据映射的实际上是同一块物理内存,等待内存发生改变的时候为子进程重新开始一块独立的空间,保存子进程的数(保持进程独立性)
提高fork创建子进程的效率
pid_t vfork(void)–通过复制父进程创建一个子进程–父子进程共用虚拟地址空间
创建子进程后,父进程会阻塞直到子进程exit退出或者(程序替换)之后才会运行
共用同一个虚拟地址空间,同时运行会造成栈混乱
vfork创建的子进程不能再main函数中return退出
进程退出:推出一个进程
main函数中调用return;
使用库函数 void exit(int status);–在任意位置调用都可以退出进程-退出之前会刷新文件缓冲区
使用系统调用接口void_exit(int status);
三种方式各有不同,在合适场景使用合适方式即可
进程的退出返回值
正常退出:通过三种退出方式退出的进程(结果是否符合预期)
异常退出:程序因为某些错误异常崩溃退出
进程的返回值,实际上只使用了有一个字节进行保存
普及两个接口–查看上一次系统盗用接口使用错误原因的接口
void–