IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_91免费国产视频_华清远见教育

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > fork函數的小誤區

fork函數的小誤區 時間:2018-08-16      來源:未知

對于fork這個函數相信大家都不陌生。我們知道他會創建一個子進程,返回兩個值,也有fork會返回兩次這么個說法。那今天在這里我們就來整理一下對這個函數的認識。

對于fork會返回兩次這個說法我不知道大家都是怎么理解的,“返回一次然后又返回了一次”,在剛接觸這個函數的時候有許多同學都是這樣認為的。那在這里呢我們就來對這個說法進行一下剖析。

首先我們知道,在進程內調用fork之后,如果調用成功會怎樣啊?沒錯,他會創建出一個子進程,但是創建出來的這個子進程在哪里呢?這里呢就涉及到了進程結構的組成知識。首先我們來看,一個進程在虛擬地址上由低到高依次存儲著正文段,數據段(這里我們把初始化和未初始化的數據統稱為數據段),和堆棧段,主要呢是這三個段。那我們說正文段,它有著只讀共享的屬性。也就是說,對于一個程序,我們可以多次運行,但是它們運行起來卻是不同的進程。那這些不同的進程是不是共享著同一個正文段啊。那我們的fork函數也一樣,在進程調用fork函數之后,子進程產生,子進程與調用fork的進程,也就是父進程共享著同一個正文段。在fork函數成功返回之后,也就是有兩個進程同時運行著同一個正文段。我們來看一下下面這段注釋:

pid = fork();

if(pid < 0)

{

perror{};

exit(1);

}

/* 此時有兩個程序運行到這 */

else if(pid == 0)

{

/*子進程代碼*/

}else

{

/*父進程代碼*/

}

我們來看上面這段代碼的注釋,也就是說在fork成功返回之后,會有兩個程序同時運行到 /*此時有兩個程序運行到這*/這個注釋處,此時父子進程里的fork便已經返回了不同的值。在父進程中,父進程的fork返回了一個大于0的數,我們都知道那是子進程的PID;在子進程中,子進程的fork返回了一個0,表示此進程是由別的進程fork出來的。那我們的父子進程都會接著向下運行,判斷下面的else if。在父進程中,由于fork返回值大于0,故else if(pid == 0)這個判斷語句不成立,然后執行下面的else里面的代碼。在子進程中,pid是等于0的,也就是說子進程在判斷了else if(pid == 0)條件后發現條件成立,然后它去執行里面的代碼。這樣的fork框架就可以讓我們父子進程在同一個正文段中區分各自進程的代碼塊。

那現在我們再來看這個“fork會返回兩次”的說法還嚴謹嗎?沒錯,我們fork也是只會返回一次的,只不過在不同的進程中(調用者和被創建者)它返回的值不一樣罷了,然后由于共用同一個正文段,所以會給我們造成返回兩次的錯覺。

上一篇:Android串口調試助手實現

下一篇:BLE協議棧

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 世博磁力泵,耐腐蚀磁力泵,耐酸碱磁力泵,氟塑料磁力泵-苏州冠裕机电科技有限公司 | 苏州探测器清洗_烟感探头清洗_感烟探测器维修清洗_火灾探测器清洗报价/价格_进口国产消防设备清洗_江苏智淼探测器清洗厂家- | 耐油橡胶接头,耐酸碱橡胶接头,耐高温橡胶接头|淞江集团 | 生物柴油设备,乙醇精馏塔,醋酸精馏塔生产厂家-无锡弘鼎华化工设备有限公司 | 全自动红外测油仪|全自动COD分析仪|BOD5分析仪|昂林官网 | 天津佳创博为科技有限公司|AGV控制器|无人搬运车|磁导航传感器|AGV专业零配件 | 童程童美少儿编程培训课程 - 上市公司缔造少儿编程专业化品牌20年 | 江苏鹤心食品有限公司-茶叶_果浆果酱_固体饮料 | 赛车微信群二维码平台下载【找群网zhaoqun5.com】| 双合金螺杆|注塑机螺杆|挤出机螺杆|双合金料管—东莞市精耐螺杆机械有限公司 | 西安宣传片拍摄,陕西艺景网络科技有限公司资料备份,西安影视公司,视频拍摄制作,抖音视频制作,纪录片拍摄西安短视频摄影团队,西安抖音视频拍摄 | 九江市东鸿气体有限公司| 容积式换热器,半容积式换热器-绍兴市压力容器有限公司 | 全玻璃视镜人孔-卡箍组件-常压单臂梁人孔-温州华强流体设备有限公司 | 乐云SEO | 品牌营销:抖音小红书关键词优化-ai搜索优化GEO推广 | 随州市东正专用汽车有限公司| 青浦区摄像头安装/青浦区无线网络覆盖/青浦区网络调试公司/青浦区IT外包公司/金山区网络维护公司/金山区防火墙调试公司 | 山东万通液压股份有限公司-自卸车专用油缸,能源采掘设备油缸,机械装备用油缸,油气弹簧,工程机械油缸,液压元件 | 射频微波_微波元器件_芯片_电源模块_Raychem_立维创展 | 和中出国移民官网|出国移民|加拿大移民|欧洲移民|爱尔兰移民|马耳他移民|希腊移民|美国移民|海外护照_和中移民 | 青岛网站建设_网站制作_品牌设计_网站设计_圭谷设计 | 无塔供水_全自动无塔供水设备_石家庄工泉水处理_无塔供水器 | 同步分流马达_液压泵维修_派克多路阀-济南富诚液压设备有限公司 通用变频器|国产变频器|深圳变频器厂家-深圳市英捷思技术有限公司 | 滑动轴承_无油自润滑轴承_复合干式_含油铜套_石墨铜套-嘉善盛元自润滑轴承厂 | 深圳奥力特化工产品有限公司企业网站 | 深圳注册公司-工商注册代理-深圳注册公司流程及费用-记帐报税-公司注销-[深圳市悟空企业管理(深圳)有限公司] | 青砖_仿古砖_仿古小青瓦-「肥西晓军仿古建材」 | 砂浆生产线_干混砂浆设备_干混砂浆生产线-苏州一工机械有限公司 砂基透水砖滤水率,防滑性试验仪,砂基透水砖落球冲击,抗冲击试验机-献县中正试验仪器销售处 | 强德防盗门-防盗门厂家-中国防盗门十大品牌-强德门业 - 浙江臻品工贸有限公司 | 五金冲压件生产厂家_加工五金拉伸件-沧州浚鼎机械制造有限公司-沧州浚鼎机械制造有限公司 | 合金锤头_破碎机锤头_耐磨锤头_巩义市东辰实业有限公司 | 垃圾桶_垃圾桶厂家_临沂市旭宏塑料有限公司| 微米环境-餐厨/厨余/果蔬垃圾处理设备厂家-大型成套设备解决方案 | 喷雾式干燥机-真空桨叶干燥机-桨叶干燥器-常州力马干燥科技有限公司 | 玉米脱皮制糁机-玉米深加工机械价格-玉米糁加工机器设备-玉米渣加工成套设备-河南粮院 | 活性炭吸附设备,UV光氧废气处理设备,破碎机专用除尘器,催化燃烧设备厂家-河北碧清环保设备有限公司 | 精密铸造-不锈钢精密铸件-硅溶胶铸造-常州思泉汽车科技有限公司 精密铸造,精密铸件,不锈钢铸造,不锈钢铸件-常州鸿雁行机械科技有限公司 | 山东礼品盒,礼品盒生产厂家,礼品包装盒厂家-济南恒印包装有限公司 | 家具板|橱柜衣柜家具板|木饰面定制|榉木胶合板|防水胶合板|胶合板厂家-佛山吉盛唐朝木业-大坂木业 | 徐州恒铭机械设备有限公司_装载机配件_压路机配件_起重机配件_挖掘机配件_配件_徐州恒铭机械设备有限公司 | 面粉加工设备-面粉加工机械-面粉机组-面粉磨粉机-面粉机成套设备-河南粮院机械制造有限公司 |