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

汕头仿站定制模板建站网站建设步骤大全

汕头仿站定制模板建站,网站建设步骤大全,自适应网站开发框架,wordpress hppts文章目录 进程替换是什么#xff1f;进程替换怎么用#xff1f;不创建子进程时使用 进程替换是什么#xff1f; 我们知道fork()之后#xff0c;父子进程各自执行父进程的一部分代码#xff0c;如果子进程就想执行一个全新的程序呢#xff1f; 以前#xff1a;父子代码… 文章目录 进程替换是什么进程替换怎么用不创建子进程时使用 进程替换是什么 我们知道fork()之后父子进程各自执行父进程的一部分代码如果子进程就想执行一个全新的程序呢 以前父子代码共享数据写时拷贝各自一份 如果子进程想要有自己的代码呢 我们可以用进程的程序替换来完成以上功能。 程序替换是通过特定的接口找到磁盘上的一个权限程序代码数据把它加载到调用进程的物理内存中。 原理 所以想进行程序替换我们只要将新的磁盘上的程序加载到内存并和当前的进程页表重新建立映射关系即可。 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。 所以进程替换没有创建新的进程因为OS并没有为该程序创建新的task_struct用的全部都是之前程序的task_struct。 进程替换怎么用 不创建子进程时使用 函数介绍 可变参数列表可以传入不定个数个参数。 我们在命令行上怎么执行的在这里就一个一个怎么填。 例如ls -a -l 就直接填入ls,‘’-a’,“-l”。 代码演示 首先要知道ls的路径 #include stdio.h #include unistd.h int main() { printf(当前进程的开始代码\n); execl(/usr/bin/ls,ls,NULL); printf(当前进程的结束代码\n); return 0; } 运行结果对比 我们看到确实可以查出来 再多传几个查看一下 #include stdio.h #include unistd.h int main() { printf(当前进程的开始代码\n); //execl(/usr/bin/ls,ls,NULL); execl(/usr/bin/ls,ls,-a,-l,NULL); printf(当前进程的结束代码\n); return 0; }运行结果 系统自身运行结果 这里大家肯会有个一行为什么最后要传一个NULL因为execl函数是可变参数列表所以我们要传一个NULL来告知它参数已经传递完毕。 这里大家肯会有疑惑为什么系统使用ls时查出来的信息是带颜色的而自己查出来时并没有。 其实是系统起了别名 我们知道多传递一个–colorauto参数列表即可 #include stdio.h #include unistd.h int main() { printf(当前进程的开始代码\n); //execl(/usr/bin/ls,ls,NULL); execl(/usr/bin/ls,ls,-a,-l,--colorauto,NULL); printf(当前进程的结束代码\n); return 0; }这里我就有一个问题了我们代码后面不是有printf吗为什么没有打印呢 因为execl是程序替换调用该函数成之后会将当前进程的所有代码和数据都进行替换包括已经执行的代码和未执行的代码。 所以一旦调用成功execl后续所有代码全部不会执行 测试一下如果调用失败我们后续代码会执行吗 我们传入一个根本不存在的执行试一下 #include stdio.h #include unistd.h int main() { printf(当前进程的开始代码\n); //execl(/usr/bin/ls,ls,NULL); execl(/usr/bin/lss,lss,-a,-l,--colorauto,NULL); printf(当前进程的结束代码\n); return 0; } 我们这里看到execl函数调用失败之后确实后续代码成功的输出并没有被替换。 **execl为什么调用成功了为什么不用它的返回值呢**因为根本就不需要返回值毫无用处execl调用成功是会把自己都替换掉。 #include stdio.h #include unistd.h #include stdlib.h int main() { printf(当前进程的开始代码\n); //execl(/usr/bin/ls,ls,NULL); execl(/usr/bin/ls,ls,-a,-l,--colorauto,NULL); exit(1); printf(当前进程的结束代码\n); return 0; }我们可以看到这里的退出码是0而不是1.
http://www.sadfv.cn/news/17467/

相关文章:

  • 后台企业网站模板欧米茄官网网站
  • 机关网站建设引导语创意营销
  • 网站建设策划书前言河南网站建设哪里好
  • 怎么样通过做网站赚钱吗网页设计与网站建设 石油大学
  • 简单网站建设设计济南做网站建设公司
  • 张店网站开发招聘百度网站名称
  • 凡科做网站需要备案吗品牌视觉设计包含什么
  • 做网站 创业舆情报告
  • 做公司网站的资料直播网站开发核心技术
  • 苍溪建设局网站常州网站建设咨询
  • 网站开发绩效指标百度指数排名
  • 网站开发使用的软件广东网站设计公司价格
  • 公司网站报价网络营销产品策略的内容
  • 简述电子商务网站建设的主要步骤龙岗网站建设公司哪家口碑好
  • 杭州手机网站建设手机编程软件哪个好
  • 个人设计师网站建设银行网站打不开用什么浏览器
  • 自建网站做淘宝联盟长春网站建设产品展示
  • 部队网站怎么做营销网站建设与管理
  • 建筑企业网站ui培训怎么样
  • 网站毕设代做贵阳网站建设公
  • 四川省城乡住房建设厅网站新泰网页定制
  • 荆门网站建设514885南昌seo网站推广费用
  • 如何进入优容网站能免费观看所有电视剧的app
  • html5网站后台怎么做如何修改网站备案的域名
  • 肇庆企业做网站福州外文网站建设
  • 个人做网站需要学什么只是网站改版的几个建议
  • 深圳创意设计网站在线工具查看源代码
  • 昆明住房和城乡建设部网站wordpress建站 网盘视频教程
  • 信息技术网站建设专业建材网站设计
  • 个人模板建站网站的意义