【吴从周课程】多进程

进程:
处于运行状态中的程序称之为进程,进程是并发程序设计中的重要概念。

进程的三种基本状态:
1)运行态
进程占用CPU资源正在运行
2)等待态
此时不占用CPU资源,等待分配资源将其唤醒。
3)就绪态
具备执行条件,等待分配时间片

fork()函数:

  1. fork的作用
    我们知道,代码最终生成一个可执行文件,这个文件实际上就是一个机器可以识别的01序列,当文件被执行时便成为了一个进程。
    我们可以在代码中使用fork()函数来让代码生成的进程再生成一个子进程,生成子进程的即为父进程,fork函数在父进程中的返回值为子进程的进程编号,在子进程中的返回值为0。
  2. 为什么叫fork?
    可以这么理解:fork这个单词的中文含义有餐叉(n.),分叉(v.)的意思,使用fork函数来生成一个子进程,进程树中便多了一个分叉。

孤儿进程:
如果父进程先结束,则子进程成为孤儿进程,并被1号进程收养(即1进程成为父进程)

父子进程的共享部分与私有部分:
我们知道,当使用fork()函数创建一个子进程时,父子进程共用源代码,那么各自分支内的代码是各自所私有的,其余部分为共用代码。

例:
#include <bits/stdc++.h>
using namespace std;
int main()
{
  cout<<"A";
  if(fork()==0)
  {
  cout<<"child";
  }
  else
  {
  cout<<"parent";
  exit(0);
  }
  cout<<"B";
  return 0;
}

例程中if语句内的为子进程私有的,子进程执行,父进程不执行, else语句内的为父进程私有的,父进程执行,子进程不执行。

查看进程:
ps
ps -ef
UID 启动进程的操作系统用户
PID 进程编号
PPID 进程的父进程的编号
C CPU使用的资源百分比
STIME 进程启动时间
TTY 进程所属的终端
TIME 使用掉的CPU时间
CMD 执行的是什么指令

注意:
1.进程的编号是系统动态分配的,相同的程序在不同的时间执行,进程的编号是不同的。
2.同一时间,进程编号唯一,不会重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民真快落

我琢磨着也没人给我打赏呀。。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值