进程的优缺点:
对用户来说操作系统变得更加健壮,(一个应用程序无法破坏另一个应进程或操作系统的运行)
对于开发者来说,更容易进行内存的读取和写入
缺点:
多任务实现开销比较大
编写能够与其他进程通信或者能够对其他进程操作的应用程序将要困难的多
wait函数族
1、wait函数:(阻塞当前进程)将当前进程挂起。等待信号来临,用来等待子进程的结束。
pid_t wait(int *wstatus)
WEXITSTATUS:宏定义:返回子进程的退出状态
2、waitpid():它可以等待指定的进程号
pid_t waitpid(pid_t pid, int *wstatue, int options);
僵尸进程:
zombie
产生原因:当进程走完自己的生命周期之后,会执行自己的喜用调用exit(9)函数,然后内存被释放,没有执行代码。但是在进程表里面仍留下进程信息(pid,退出信息),直到父进程将他们回收
进程间的通信方式(IPC)方式
管道
消息队列
信号量
共享内存
套接字
进程间通信的目的
1.数据传输
2.共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进城应该第一时间看到
3.通知事件:一个进程需要向另一个或者一组进程发送消息,通知它(她们)发生了某种时间(如进程终止时通知父进程)
4.资源共享:多个进程之间共享同样的资源,为做到这一点,需要内核提供锁和同步机制
5.进程控制:
管道通信:无名管道,一端读,一端写
管道是半双工的,数据只能单向流动,需要双方通信时,需要建立两个管道