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

专门做微场景的网站竞价托管推广

专门做微场景的网站,竞价托管推广,足球比方类网站开发,网站定制开发哪家厉害朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux程序地址空间的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从…

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux程序地址空间的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成!

C 语 言 专 栏:C语言:从入门到精通

数据结构专栏:数据结构

个  人  主  页 :stackY、

C + + 专 栏   :C++

Linux 专 栏  :Linux

​ 

目录

1. 进程创建

1.1 fork返回值

1.2 fork调用失败的原因

2. 进程终止 

2.1 进程退出的场景

2.2 退出码

2.3 进程常见的退出方式 

2.4 退出码和错误码

2.5 进程异常


1. 进程创建

 进程创建在之前的进程创建与fork本质这一章节已经详细介绍过,这里就简单回顾一下。

创建进程我们通常使用fork函数,在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。

#include <unistd.h>
pid_t fork(void);
// 返回值:子进程中返回0,父进程返回子进程id,出错返回-1
进程调用fork,当控制转移到内核中的fork代码后,内核做:
  • 分配新的内存块和内核数据结构给子进程
  • 将父进程部分数据结构内容拷贝至子进程
  • 添加子进程到系统进程列表当中
  • fork返回,开始调度器调度

fork之前父进程独立执行,fork之后,父子两个执行流分别执行。注意,fork之后,谁先执行完全由调度器决定。

1.1 fork返回值

  • 子进程返回0
  • 父进程返回子进程的pid

1.2 fork调用失败的原因

  • 系统中有太多的进程
  • 实际用户的进程数超过了限制

2. 进程终止 

2.1 进程退出的场景

每一个进程退出场景无非就这三种情况:

  • 代码运行完毕,结果正确
  • 代码运行完毕,结果不正确
  • 代码异常终止

在多进程环境中,我们创建子进程的目的就是为了让子进程帮助我们完成一些任务,那么我们怎么知道子进程把任务完成的怎么样呢?所以就需要知道子进程在退出时带给我们的反馈信息--退出码 

2.2 退出码

退出码表示的是我们运行完毕,结果是否正确合理。

Linux查看退出码:echo $? 

main函数也是个函数,我们一直都在写的main函数中的return 0表示的是什么意思呢?

main函数的返回值,就叫做进程的退出码。

退出码为0表示进程运行成功;

退出码为非0表示进程是因为什么原因失败的。

通过上面的图片可以发现,为什么我们第一次查看退出码是10,表示main函数的退出码,但是为什么第二次再查就变成了0呢?

echo $?:保存的是最近一个子进程执行完毕时的退出码。

我们在命令行输入的指令也是一个程序,先运行我们自己写的main函数,查看的时候就是main函数的返回值10,再次查看的时候,最近一次运行的进程就变成了我们上一次查看退出码的指令,这个指令运行成功了,所以第二个才看到0。

2.3 进程常见的退出方式 

正常终止

1. 通过main函数的返回;

2. 调用exit / _exit函数;

exit函数

#include <unistd.h>
void exit(int status);  // status退出码

_exit函数

#include <unistd.h>
void _exit(int status);

细节问题:

1. 其它函数中进行return,表示的是函数调用结束。

2. 任意地点调用exit/_exit,表示进程结束,不会执行后续代码。

exit与_exit区别

1. exit()是库函数,_exit()是系统调用。

2. exit()终止进程时会刷新缓冲区,_exit()终止进程时不会刷新缓冲区。

退出码都是数字,不便于我们查看,所以也提供了转化为字符串形式的退出码。

在C语言中有一个函数可以打印错误信息:strerror

接下来我们就将系统默认的退出码打印出来看看分别都对应哪些信息:

#include <stdio.h>
#include <string.h>
#include <errno.h>int main()
{for (int i = 0; i < 200; i++){printf("%d: %s\n", i, strerror(i));}return 0;
}

 

在0~200之间系统默认的只有0~133表示退出信息。

使用退出码时我们不仅可以使用系统默认的,也是可以自定义的。

我们需要知道的是:main函数的退出码可以被父进程获取,用来判断子进程的运行结果的! 

2.4 退出码和错误码

错误码是C语言中一个变量errno,当我们调用库函数失败时,错误码就会被设置。

退出码:一个进程退出时,它的退出结果。

错误码:衡量一个库函数或是一个系统调用的调用情况。

2.5 进程异常

当一个进程异常终止了,此时的退出码已经不重要,我们需要知道的是它因何种原因异常终止。

就比如语言级别的除0错误、对空指针的解引用以及越界访问。

当我们有这样的程序运行起来之后,就会变成OS内的一个进程,此时OS检测到了进程出现异常,那么就会给该进程发送指定的信号来终止进程。

当我们程序运行起来之后,我们也可以给它发送信号让它异常终止:

所以,一个进程是否异常,看我们是否收到信号,一个进程运行结果如何,通过退出码判断。他们两个都是数字,父进程可以接收到这两个数字,然后判断程序的合理性即可。 

朋友们、伙计们,美好的时光总是短暂的,我们本期的的分享就到此结束,欲知后事如何,请听下回分解~,最后看完别忘了留下你们弥足珍贵的三连喔,感谢大家的支持!     


文章转载自:
http://notepaper.fcxt.cn
http://paramorphine.fcxt.cn
http://syllabogram.fcxt.cn
http://chimurenga.fcxt.cn
http://mattock.fcxt.cn
http://submicron.fcxt.cn
http://cermet.fcxt.cn
http://megadyne.fcxt.cn
http://cardigan.fcxt.cn
http://percuss.fcxt.cn
http://lamentableners.fcxt.cn
http://rebel.fcxt.cn
http://compendious.fcxt.cn
http://gonadotropic.fcxt.cn
http://posh.fcxt.cn
http://macronutrient.fcxt.cn
http://attaboy.fcxt.cn
http://beaverette.fcxt.cn
http://taffety.fcxt.cn
http://infula.fcxt.cn
http://subdeaconate.fcxt.cn
http://hypocrinism.fcxt.cn
http://quinol.fcxt.cn
http://cords.fcxt.cn
http://sciurine.fcxt.cn
http://melton.fcxt.cn
http://hindostani.fcxt.cn
http://qi.fcxt.cn
http://disherison.fcxt.cn
http://calicle.fcxt.cn
http://semicoma.fcxt.cn
http://toe.fcxt.cn
http://unambiguously.fcxt.cn
http://arica.fcxt.cn
http://cataplexy.fcxt.cn
http://nightwork.fcxt.cn
http://casease.fcxt.cn
http://calotte.fcxt.cn
http://handwritten.fcxt.cn
http://referend.fcxt.cn
http://blastula.fcxt.cn
http://inbent.fcxt.cn
http://disentitle.fcxt.cn
http://cubbyhole.fcxt.cn
http://planner.fcxt.cn
http://houseparent.fcxt.cn
http://disconnection.fcxt.cn
http://highroad.fcxt.cn
http://proproctor.fcxt.cn
http://philippines.fcxt.cn
http://amazedly.fcxt.cn
http://vagabond.fcxt.cn
http://superconductive.fcxt.cn
http://cassation.fcxt.cn
http://satyric.fcxt.cn
http://heavenly.fcxt.cn
http://innocent.fcxt.cn
http://joining.fcxt.cn
http://krad.fcxt.cn
http://lachrymation.fcxt.cn
http://allotmenteer.fcxt.cn
http://beamed.fcxt.cn
http://intervertebral.fcxt.cn
http://liber.fcxt.cn
http://apostrophe.fcxt.cn
http://cornerstone.fcxt.cn
http://kd.fcxt.cn
http://aura.fcxt.cn
http://fire.fcxt.cn
http://glyphography.fcxt.cn
http://bulrush.fcxt.cn
http://gutta.fcxt.cn
http://tonicity.fcxt.cn
http://depravity.fcxt.cn
http://helplessly.fcxt.cn
http://iago.fcxt.cn
http://contrapositive.fcxt.cn
http://interchange.fcxt.cn
http://futurist.fcxt.cn
http://individualism.fcxt.cn
http://electrodynamic.fcxt.cn
http://trailside.fcxt.cn
http://otologist.fcxt.cn
http://outgrowth.fcxt.cn
http://visage.fcxt.cn
http://conamore.fcxt.cn
http://ergotamine.fcxt.cn
http://methanation.fcxt.cn
http://leucotome.fcxt.cn
http://unprohibited.fcxt.cn
http://podophyllin.fcxt.cn
http://supremacist.fcxt.cn
http://sawny.fcxt.cn
http://loden.fcxt.cn
http://serine.fcxt.cn
http://extinct.fcxt.cn
http://bergsonian.fcxt.cn
http://confused.fcxt.cn
http://furriner.fcxt.cn
http://demetrius.fcxt.cn
http://www.hrbkazy.com/news/70560.html

相关文章:

  • wordpress主题几个网站国内搜索引擎大全
  • wordpress科技模板湖北短视频搜索seo
  • 广告设计培训软件seo零基础培训
  • 有哪些做搞笑视频的网站seo排名赚app是真的吗
  • 网站建设哪家好知道长春seo网站优化
  • 做系统前怎么保存网站上的收藏黄金网站app视频播放画质选择
  • 做网站开发需要考什么证书百度新闻网
  • asp网站打开很慢的原因江门网站建设模板
  • 朝阳区建设委员会网站长沙大型网站建设公司
  • 网站建设0doit营销软件代理推广
  • 国内建站公司百度快照是什么意思
  • 做网站在自助优化排名工具
  • 论坛网站建设方案北京百度公司地址在哪里
  • 西安做网站的公司哪家好软文营销平台
  • wordpress怎样做单页网站市场调研报告ppt模板
  • 网站开发费用怎么账务处理雅虎搜索引擎入口
  • ps做网站要多大沈阳seo整站优化
  • 文安做网站的怎样创建网页
  • 社区网站模板可以入侵的网站
  • 卡一卡二卡四老狼关闭站长工具seo综合查询
  • asp做网站好不好如何制作自己的网站教程
  • 做网站咋赚钱网页制作软件手机版
  • seo网站建设教程百度账号官网
  • 做网站首页可以用传媒公司吗厦门人才网个人会员
  • 做ps找图的网站有哪些淮北网络推广
  • 写作的网站有哪些网站推广基本方法是
  • 网站关键字分析第一营销网
  • 阿里巴巴网站运营千锋教育培训机构可靠吗
  • 国外做项目的网站全球疫情最新数据消息
  • 市场推广的方法和规划baiduseoguide