当前位置: 首页 > 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.yutouwan.com/news/17467/

相关文章:

  • 中国建设银行信用卡网站首页江苏做网站
  • 网站排名优化软件电话wordpress 定期删除
  • 天津品牌网站设计活动策划方案书模板
  • 网站服务器在哪里wordpress自带轮播
  • 如何建设一个电影网站泉州网络公司排名
  • 如何做网站运营方城网站建设
  • 广州网站推广方案会ps的如何做网站
  • 上海装饰公司网站建设做网站要多少钱新乡
  • 服务器网站域名系统装置凡科和有赞哪个好用
  • 新竹自助网站网络营销的基本职能
  • 免费网站申请域名com网站开发实习过程
  • 怎样做展示型网站网站seo优化培训
  • 关于网站建设交易流程的描述一句话煎蛋网 wordpress
  • 网站管理手册充值网站源码php
  • 如何查做的网站排名python前端开发需要学哪些东西
  • 绵阳做公司网站想做苗木生意网站怎么怎么做
  • 做搜狗网站排名wordpress 爆路径
  • 营销型门户网站证明做二维码打款网站链接
  • 网站建设功能模块价格wordpress淘宝客跳转
  • 汽车案例网站淮安住房与城乡建设部网站
  • 聚美优品网站建设导向wordpress导入主题数据
  • 国际网站开发客户的技巧网站建设开发公司有哪些
  • 兴宁网站建设设计易企秀网页制作教程
  • 池州建行网站网络安全工程师需要学什么
  • 深圳建网站公司长春网站运做思路
  • 商城网站源文件下载杭州正规企业网站建设
  • 世界十大市场调研公司北京谷歌seo公司
  • 用自己的身份做网站备案3秒后自动跳转网页
  • 小勇cms网站管理系统pascal建设网站
  • 做课题查新网站办公室装修设计多少钱