当前位置: 首页 > news >正文

南通企业网站排名优化sem运营是什么意思

南通企业网站排名优化,sem运营是什么意思,wordpress登录 小工具,招标网站靠谱吗目录 前言: 一、进程创建: 1、fork函数 2、创建多个进程: 3、写时拷贝: 二、进程终止: 进程退出码: 退出方式: ​编辑 进程异常退出: 缓冲区: 前言&#xff1…

目录

前言:

一、进程创建:

1、fork函数

2、创建多个进程:

3、写时拷贝:

二、进程终止:

进程退出码:

退出方式:

​编辑

进程异常退出:

缓冲区:


前言:

在将进程创建之后还要对其进行合理的管理,使用进程控制相关的知识对进程进行管理就能够解决很多其他问题

一、进程创建:

1、fork函数

fork函数就是在当前进程中创造一个新进程,这个新进程就是当前进程的子进程,当前进程就是新进程的父进程,子进程的代码和数据就是剩余父进程的代码和数据

返回值:

这个返回值的类型是pid_t这个是typedef int,使用与进程的,fork函数会有两个返回值:

创建成功:子进程返回0,父进程返回子进程的pid

创建失败:返回-1

为什么要给子进程返回0,父进程返回子进程的pid

这样有两个返回值是为了区分子进程和父进程,我们不妨想想,为什么要有子进程和父进程呢?这样的原因主要是为了让子进程执行和父进程不一样的代码块,所以就需要不同的返回值来区分子进程和父进程。

这样就可以用if 、else if、 else进行分流操作,来完成子进程完成和父进程不一样的操作

并且一个子进程是只有一个父进程的,一个父进程可能有许多子进程,所以就需要给子进程一个返回0来标记,给父进程返回子进程的PID来管理子进程。

还有其他几个问题在下面文章中所写了,如

1、fork函数究竟干了什么?

2、一个函数是如何做到返回两次的,这怎么理解?

3、同一个变量怎么会有不同的内容,如何理解?

【Linux】进程概念与PCB,父子进程与foke函数-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/2303_80828380/article/details/143607556?spm=1001.2014.3001.5501

2、创建多个进程:

如上代码就是使用for循环创建多个进程,最后的sleep(1000)是不让父进程结束,如果父进程结束了就会使子进程变成孤儿进程,然后在调用函数child里面打印子进程的pid和ppid进行观察

如上,左边就是每次子进程的调用,可以看到,子进程的调用是毫无规律的,也就是说在多进程的调用中,哪一个进程被调用是不知道的,这是由调度器决定的,看调度器把哪一个进程先放入调度队列中谁就先进行调度

3、写时拷贝:

写时拷贝实际上是通过页表的方式,对不同的进程进行空间寻址,达到出现改写行为时,父子进程指向的数据就会不同的机制

当进行写时拷贝前:

当进行写时拷贝后:

如上,无论是父进程还是子进程进行数据的修改都会进行写时拷贝,就会在物理空间中开辟一块新空间,然后就会重新映射物理地址到新开辟的空间,这就是写时拷贝原理

二、进程终止:

如果进程终止的话,那么就必然是下述的三种情况

代码运行完毕,结果正确
代码运行完毕,结果不正确
代码异常终止(进程崩溃)

进程退出码:

在命令行解释器中可以用
echo   $?来进行查看上一个进程的退出码

当我们的代码运行起来就变成了进程,当进程结束后main函数的返回值实际上就是该进程的进程退出码,这个退出码对应着相应的退出信息,所谓的退出信息就是以退出码的形式作为main函数的返回值返回,这样就能够知道是因为 什么而导致进程崩溃,一般main函数的退出码是0的话就是正常运行结束,如果不是0的话就是异常退出,

 

这样echo看到的就是正常结束

strerror函数可以通过打印出退出码对应的信息:(这个函数在string文件中)

在Linux中有133个退出码(不同环境下退出码的个数和对应的含义也可能会不同)

如下:当进程中被热键ctrl + c终止后对应的退出码就是130在上面看到就是 自我退出 的

如上,如果在进行echo $?的话就是看的echo这个进程的退出码了,所以看一个指令的退出码,一般都是0,

我们也可以模拟实现一个错误码

这样的话也可以实现错误码(数组下标)对应的错误信息了

退出方式:

1、return退出

一般return退出就是退出当前函数到上一级

2、热键退出(ctrl+c)

如果是热键退出的话就属于外部退出,这样退出的话在Linux中就属于130号退出码,

返回码137通常表示命令或进程被强制终止,具体原因包括以下几种‌,命令被另一个程序或脚本通过发送SIGKILL信号终止‌:在Linux系统中,SIGKILL信号(值为9)是一个强制终止进程的信号‌

3、exit与_exit

这两个退出函数,本质上来说,没有区别,都是退出进程,但是exit()是对_exit()做的封装实现,推荐一般使用exit毕竟这个函数还会多做一点事比如冲刷缓冲区等等

看看如下代码:

运行结果是如下的:
原因:exit是终止进程的,当执行完exit之后就会结束这个进程就不会继续往下进行了

_exit与exit区别:

当执行如下的代码的时候,就会刷新缓冲区,这样的话就可以看见所打印的内容了

同样的代码当是 _exit 的时候就看不到所打印的内容

原因:

exit()是对_exit()做的封装实现
_exit()就只是单纯的退出程序
而exit()在退出之前还会做一些事,比如冲刷缓冲区,再调用 _exit()

进程异常退出:

当进程异常退出的时候,再看退出码就没有意义了

在Linux中,进程异常退出可能有以下几种情况:

接收到信号导致的异常退出:常见的信号如kill -9 ,热键ctrl + c

资源耗尽:例如,CPU时间、内存等资源用尽

程序代码错误:例如,数组越界、无效指针引用等

系统调用错误:进程执行了非法的系统调用

缓冲区:

由于_exit函数是一个系统调用,直接由操作系统内核提供,所以如果缓冲区也在内核中的话,那么在_exit结束进程的时候就可以刷新缓冲区了,但是_exit却不能够刷新缓冲区,所以缓冲区不在内核中

http://www.wooajung.com/news/30526.html

相关文章:

  • 用自己网站域名这么做邮箱怎样才能在百度上发布信息
  • 惠阳市网站建设北京网站sem、seo
  • 冀州做网站的公司北京seo外包平台
  • 免费使用个人网站怎么把平台推广出去
  • 做学校网站的目的是什么seo搜索引擎优化人员
  • 相亲网站认识的可以做朋友google推广及广告优缺点
  • web开发培训班课程网站seo外包价格
  • 代码编写网站佛山网站排名提升
  • 公司软件定制开发seo入门书籍推荐
  • 云网站建设郑州seo优化外包顾问阿亮
  • 东营网站建设哪家好摘抄一小段新闻
  • 做网站建设的公司win10系统优化软件
  • 做软件项目需不需要有网站广告公司业务推广
  • 政府网站建设情况seo排名赚app最新版本
  • 做旅游网站平台合作入驻长沙百度搜索排名
  • 自助网站模板平台域名是什么意思
  • wordpress网站设密码长沙市seo百度关键词
  • 吉林省电力建设总公司网站长沙关键词优化平台
  • 今天兰州最新消息google移动服务应用优化
  • 网站出现乱码网站查询域名入口
  • 开发软件网站多少钱西安网站建设推广专家
  • 商务网站开发与建设论文抖音广告投放平台官网
  • 高级感ppt模板seo管理
  • 小企业网站建设的小知识网络营销推广方案3篇
  • 嘉兴网站建设解决方案seo搜索引擎实战详解
  • 用css做网站的代码如何建立自己的网站平台
  • 如何做一元购网站外贸网站建设报价
  • 微软公司做网站的软件百度关键词网站排名优化软件
  • 做全景图二维码的网站抖音seo搜索引擎优化
  • 微信公众号和网站建设方案对网站进行seo优化