进程是一个具有一定独立功能的程序的一次运行活动
三种状态
进程 id(PID): 标识进程的唯一数字
父进程的 ID:PPID
进程互斥: 指当有若干进程都要使用某一共享资源时, 任何时刻最多允许一个进程使用, 其他要使用该资源的进程必须等待, 直到占用该资源者释放了该资源为止
进程同步: 一组并发进程按一定的顺序执行的过程称为进程间的同步. 具有同步关系的一组并发进程称为合作进程, 合作进程间互相发送的信号称为消息或事件
进程调度: 按一定算法, 从一组待运行的进程中选出一个来占有 CPU 运行
常用算法: 先来先服务调度算法, 短进程优先调度算法, 高优先级优秀调度算法, 时间片轮转法
死锁: 多个进程因竞争资源而形成一种僵局, 若无外力作用, 这些进程都将永远不能再向前推进
获取 ID
获取本进程 ID getpid(void)
获取父进程 ID getppid(void)
进程创建 - fork
三种返回值
1, 在父进程中, fork 返回新创建的子进程的 PID
2, 在子进程中, fork 返回 0
3, 如果出现错误, fork 返回一个负值
注意: 子进程的数据空间, 堆栈空间都会从父进程得到一个拷贝, 而不是共享. int count=0, 在子进程中对 count 进行加 1 的操作, 并不会影响到父进程的中的 count 值, 父进程中的 count 值仍为 0
进程创建 - vfork
于 fork 区别
1,fork: 子进程拷贝父进程的数据段
vfork: 子进程和父进程共享数据段
2,fork: 父, 子进程的执行次序不确定
vfork: 子进程先运行, 父进程后运行
exec 函数族
启动一个新程序, 替换原有的进程, 因此进程的 PID 不会改变
进程等待
wait(int *status)//pt=wiat(NULL);
阻塞该进程, 直到某个子进程退出
进程通信
目的
1, 数据传输
2, 资源共享
3, 通知事件
4, 进程控制
常用进程间通信方式
1, 管道 (pipe) 和有名管道(FIFO)
2, 信号(signal)
3, 消息队列
4, 共享内存
5, 信号量
6, 套接字
来源: http://www.bubuko.com/infodetail-3095860.html