进程1,fork,getpid函数的使用

进程 = pcb块 + 各个段(堆 | 栈 | bss | data | text)

进程的实体:

栈和堆是动态数据,程序运行后才会出现;静态数据是随着a.out 从硬盘移到内存中,编译完就存在的

程序编译好后放在硬盘上(静态),运行时放在内存(进程,动态),一个程序可以对应n个进程,运行多次。程序 加载 到内存 运行起来 成为了 进程。

进程的状态:

----------------------------------------------------------------------------------------------------------

命令:top---------类似于任务管理器

pid号类似于人的身份证号         MEM:所占内存       TIME+:持续运行的时间

PR、NI:优先级             RES:使用的资源

后台进程通过终端控制不了了,即按键没用,只能通过发信号来结束进程

------------------------------------------------------------------------------------------------------------

fork();---------------------------------------

pid_t 实际上是int 型的

父进程和子进程都从赋值运算开始,子进程代码都拷贝过去了,只是执行时从fork后开始

①只执行一次,②⑤执行公共代码

父子进程都拥有独立的0-3G空间,数据互不影响

规律:有n个fork() ,就有 2^n 个进程

fork() && fork() || fork();    //总共几个进程

或运算,一真为真;与运算,一假为假(从左往右运算,先看符号优先级,|| 的优先级比 && 低)

进程的应用场景:

getpid();getppid();-------------------------------------------------

结束子进程:子进程呈僵尸态(进程已经结束,但是pcb块还在,占用内存)

收尸好处:(1)知道子进程什么原因结束的   (2)回收资源

如果后面也结束父进程,则僵尸态会被消除

结束父进程:子进程变后台进程

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值