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

免费网站申请注册步骤网络营销咨询服务

免费网站申请注册步骤,网络营销咨询服务,最新网站制作,一般网站建设费用预算个人主页:Lei宝啊 愿所有美好如期而遇 通过系统调用创建进程--fork函数 结果是什么呢? 为什么会出来三个打印呢? 就是因为父进程调用了fork函数创建出了子进程的task_struct,但是一个进程不止task_struct,还有代码和数据,他们…

 

个人主页:Lei宝啊 

愿所有美好如期而遇


通过系统调用创建进程--fork函数

结果是什么呢?

为什么会出来三个打印呢? 

就是因为父进程调用了fork函数创建出了子进程的task_struct,但是一个进程不止task_struct,还有代码和数据,他们从哪里来,于是,子进程就从fork函数之后共享父进程的代码和数据。

再来看一段代码

感兴趣的话,可以去试试通过fork返回的id值的不同去实现两个循环同时跑,一个父进程的,一个子进程的。

我们有三个问题:

  1. 为什么fork给父进程的id返回子进程的PID,给子进程的id返回0?
  2. fork为什么会返回两个值? 
  3. fork创建了子进程,下面的代码都是共享的,但是怎么一个id会有两个值呢?  

 1:一个父亲可以有多个儿子,但一个儿子是不是只有一个父亲?(只考虑亲生的),也就是说,当你走在外面碰见你父亲的朋友,他就知道你父亲是谁,但是你父亲和别人说我儿子是程序员,有人就会问是哪个儿子?所以给父进程的id返回子进程的PID,要我们知道是创建了哪个子进程,而给子进程返回0,表示创建成功,如果给父进程的id返回小于0的数,那就是创建失败。

2:在fork函数中,我们说父进程会创建子进程的task_struct,此时代码和数据也完成了共享,CPU也就将他们同时跑起来了,那么此时的fork函数的return也是代码吧,是不是也共享,那是不是父进程和子进程各自返回一次?

3:父进程和子进程的代码和数据在子进程创建好后就共享了,但是子进程对数据进行更改,是不是也会影响到父进程呢?

我们平时的经验告诉我们,多个进程同时跑,一个崩了,其他的不会被影响,就像我同时开着浏览器和QQ音乐,其中一个崩了,会不会影响另一个?不会,这是操作系统设计好的,进程之间是独立的,谁也不会影响到谁。

那么子进程对数据修改是不是也不应该影响到父进程啊,所以就有写时拷贝,当父进程或者子进程对数据进行修改时,会开辟一个临时变量拷贝原数据,你对这个临时变量做修改。

那么id值会不会有两个呢?我们想想C语言中,变量名在编译后还存在吗?

不存在了,变量名是给程序员看的,机器不需要,所以编译后变量名就变成了地址,我们的id也是如此,他是虚拟地址映射到物理空间上的,所以编译后,由于父子进程,其实不是一个地址,是两个,也就不存在一个id两个值的问题了。

在Linux中,可以用一个变量名表示不同的地址。

我们试着创建多个进程:

看右边,子进程不断被创建。

而后不断退出,从S+变成Z+,以及<defunct> 

http://www.dinnco.com/news/25913.html

相关文章:

  • 网站建设 软文小小课堂seo自学网
  • 网站搭建素材群发软文
  • 做网站模板的海报尺寸多少钱100种宣传方式
  • 网站程序语言seo是什么职业做什么的
  • wamp做的网站上传seo推广如何做
  • 建设自己网站的流程图淘宝关键词排名怎么查
  • 东城网站建设免费的云服务器有哪些
  • 网站变app东莞关键词排名提升
  • 新网站做优化要准备什么百度竞价被换着ip点击
  • 深圳做网站网络营销公司排名chrome网页版入口
  • 高端网站建设 工业深圳企业黄页网
  • 微信订阅号做微网站外链link
  • 郴州网站seo百度浏览器极速版
  • 做网站开发的有哪些公司好前端优化网站
  • 建设网站建设注册网站在哪里注册
  • 宝鸡外贸网站开发销售找客户的方法
  • 万户网站天下合肥seo报价
  • 网站开发及维护合同搜索引擎优化入门
  • 如何知道一个网站是用什么做的电商广告
  • 网站建设专家工作总结做网站的费用
  • 网站建设的三网合一万网注册域名查询
  • 专注微信网站建设8大营销工具
  • 网站后台更新了 前台不现实在线html5制作网站
  • 自学家装设计从哪入手站内seo的技巧
  • 新疆乌鲁木齐做网站免费的seo优化工具
  • 基础html网页模板天津网站seo设计
  • 苏州做网站的哪个公司比较好网络营销方式与工具有哪些
  • html界面设计工具免费seo教程
  • 建筑设计公司职位有哪些企业优化推广
  • 青海餐饮网站建设公司seo优化人员