【Linux】进程概念


一、查看进程?

xshell中开启多窗口可以一边关注程序运行情况,一边进行其他操作,开启的组合键shift+alt+t,然后会在原窗口下开启一个相同服务器的窗口,此时点击该标题栏
在这里插入图片描述

使用鼠标进行拖动,然后窗口界面会出现明显的淡蓝色背景,此时就可以拖到你想要的位置上,在开启多窗口后,需要在不同的窗口建进行切换,组合键为shift+tab。

1.通过/proc系统文件夹查看所有进程
在这里插入图片描述

2.ps axj | grep test
在这里插入图片描述
在这里插入图片描述
结束进程,用【Ctrl + c】或执行 kill -9 [选项名]

二、通过系统调用获取进程标示符

getpid() :获取进行id
getppid():获取父进程id
在这里插入图片描述
通过 getpid() 和 getppid() 函数得到的值是进程对应的id;
另外 test 进程的父进程是 bash,即 shell 外壳,这也侧面证实了 – shell 为了防止自身崩溃,并不会自己去执行指令,而是会派生子进程去执行。

三、通过系统调用创建子进程

1.通过man fork认识fork

man 帮助的内容非常之多,为了快速找到需要定位的内容,man 帮助的内容非常之多,为了快速找到需要定位的内容在这里插入图片描述
在这里插入图片描述
可以看到,创建成功的话子进程的id会返回给父进程,0返回给子进程;父进程返回给bash,即fork有两个返回值。创建失败,返回-1。
2.通过系统调用接口 fork 来创建子进程:
通常fork之后通过if分流:
在这里插入图片描述

在这里插入图片描述

四、两种特殊的进程

1.僵尸进程
一个进程的资源在被全部释放之前,需要由父进程或者操作系统来读取退出状态代码,如果父进程不读取子进程的退出状态代码,该进程的PCB就一直得不到释放,此时该进程就会变成僵尸进程。
创建一个僵尸进程的例子:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
当 kill 掉子进程18332之后,由于父进程中没有对子进程的退出状态代码进行读取,所以子进程变成了 Z 状态,并且子进程后面还提示了 defunct (失效的,不再使用的),此时,如果父进程一直不对不对子进程进行读取,那么子进程就会变成僵尸进程。

僵尸进程的危害:如果父进程或者操作系统一直不对子进程的退出状态进行读取,那么子进程的退出状态就将一直被维持下去;维护退出状态本身就是要用数据维护,也属于进程基本信息,所以如果进程一直处于退出状态,进程对应的 PCB (task_struct) 就将一直存在,不会被释放;会造成内存资源的浪费;同样的也会造成内存泄露。

2.孤儿进程
父进程先退出,子进程就称之为“孤儿进程”。
在这里插入图片描述
在这里插入图片描述
孤儿进程会被1号init进程领养。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值