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

网上做夫妻的网站logo标志设计网

网上做夫妻的网站,logo标志设计网,免费多用户商城,响应式网站宽度文章目录 一、看一看单进程版的进程替换二、进程替换的原理三、多进程版——验证各种程序替换接口exec系列函数execlexeclpexecvexecvp tipsexecleexecve 四、总结 一、看一看单进程版的进程替换 #includestdio.h #includeunistd.h #includestdlib.hi… 文章目录 一、看一看单进程版的进程替换二、进程替换的原理三、多进程版——验证各种程序替换接口exec系列函数execlexeclpexecvexecvp tipsexecleexecve 四、总结 一、看一看单进程版的进程替换 #includestdio.h #includeunistd.h #includestdlib.hint main() {printf(before : I am a process, pid : %d,ppid : %d\n,getpid(),getppid());execl(/usr/bin/ls, ls , -a , -l, NULL);printf(after : I am a process, pid : %d,ppid : %d\n,getpid(),getppid());return 0; }通过代码和现象可以看出执行了execl函数之后其之后的代码不再被执行。 而是执行了 ls -a -l 这条指令。 二、进程替换的原理 CPU首先执行父进程的代码打印出before语句后接下来执行execl系统调用。 ls -a -l也是一个文件放在磁盘中execl将ls -a -l文件的代码和数据进行替换把调用execl系统调用的进程的数据和代码替换掉 替换后execl之后的代码不再被执行。 注意进程替换仅仅是替换掉进程的数据和代码并没有创建新的进程。所以进程的id没有改变 补充说明 1.程序替换成功后exec 系列的函数后面的代码不会被执行。2.如果程序替换失败才有可能执行后续的代码并且替换成功没有返回值替换失败才有返回值。 三、多进程版——验证各种程序替换接口 exec系列函数 execl int execl(const char *path, const char *arg, ...);exec系列是进程替换的系统调用系列函数l代表的就是list的意思。 就是链式的。 具体使用方法 execl(/usr/bin/ls, ls , -a , -l, NULL);第一个参数就是执行的命令文件所在的路径。 第二个参数往后开始就是要执行什么命令 平常执行的命令是这样的ls -a -l 现在传参给execl后只需要把空格变成逗号即可并在最后加上一个NULL即可 execl第一个参数要传路径的原因 想要执行一个程序就必须先找到这个程序 execlp int execlp(const char *file, const char *arg, ...);p代表的就是PAHT环境变量。 代表的就是从自己的环境变量中查找路径。 所以标准写法如下 execlp(ls, ls , -a , -l, NULL);这样写不带路径执行该函数时系统会去环境变量中查找该命令所在路径。 当然也可以这样写 execlp(/usr/bin/ls, ls , -a , -l, NULL);这样写对编译器更好也不用编译器自己去找了。 这里有个问题 execlp(ls, ls , -a , -l, NULL);第一个ls和第二个ls一样吗 答案是不一样的前面说过要执行一个程序必须先找到该程序。 第一个ls其实就是程序所在的路径只不过该函数可以通过PATH环境变量帮助我们找到ls这个命令。 也就是说通过环境变量和第一个ls就能找到ls所在的路径/usr/bin/ls 而第二个ls是我该怎么执行ls这个命令。 总结第一个ls是找到ls这个命令在哪第二个ls表示的是该怎么执行ls这个命令。 execv 这里的v就代表vector也就是顺序表。 int execv(const char *path, char *const argv[]);传递的第二个参数就由list变成了字符串指针数组。 核心的传参方式如下 char* const argv[] {ls,-a,-l,NULL}; execv(/usr/bin/ls,argv);第一个参数是路径表示操作系统需要去哪个路径下执行命令第二个参数是字符串指针数组。经过操作系统层面会将数组的每一个字符串提取出来传递给第一个参数。 因为一个可执行程序肯定也有main函数也就是说将argv作为参数传给了main函数main函数就知道怎么执行该命令了。 execvp 与execlp类似 int execvp(const char *file, char *const argv[]);第一个参数传递的是文件路径但是由于有环境变量的存在使得CPU执行该系统调用时不费什么劲就能找到file文件。 char* const argv[] {ls,-a,-l,NULL}; execvp(ls,argv);第一个ls表明所需要执行的指令所在路径。 tips 注意execl函数不仅能调用系统提供的函数还能调用用户自己的命令也就是还能通过execl函数调用其他可执行程序。 execl(./otherExe,otherExe,NULL);因为不管是什么语言都能夸语言调用 因为无论是可执行程序还是脚本本质都是进程 是进程都能进行进程进程替换都能用exec系列函数调用 所以可以通过该调用方法来调用可执行程序。 验证execv可以将命令传递给其他可执行程序。 otherExe.c文件 int main(int argc,const char* argv[]) {int i 0;for(;iargc;i){printf(%s\n,argv[i]);}return 0; }test.c int main() {//多进程版进程替换char* const argv[] {ls,-a,-l,NULL};pid_t id fork();if(id 0){//childprintf(before : I am a child process, pid : %d,ppid : %d\n,getpid(),getppid());execvp(./otherExe,argv);printf(after : I am a child process, pid : %d,ppid : %d\n,getpid(),getppid());exit(0);}//father sleep(3);int status;pid_t ret waitpid(id,status,WNOHANG);if(ret id){printf(wait success! wait pid is : %d \n,id);} return 0; }执行test可执行程序后会将argv参数传递给otherExe可执行程序然后打印出来。 总结通过exec系列函数可以调用其他的可执行程序。 问题2进程替换时环境变量会被替换吗? 答案是并不会。 当我们在test.c中调用otherExe.c时并没有将环境变量传递给otherExe函数。 但是通过进程替换仍然可以看到otherExe函数仍然可以打印出环境变量 otherExe.c文件如下printf(这是命令行参数\n); int i 0; for(;argv[i];i) {printf(%s\n,argv[i]); } printf(这是环境变量信息\n);i 0; for(;env[i];i) {printf(%s\n,env[i]); }结论环境变量不会被进程替换给替换掉进程替换只是替换进程的代码和数据。 环境变量会随着继承关系从父进程继承下来。 环境变量也是数据创建子进程的时候就已经继承下来了。 在bash进程中导入环境变量 export xxxxxx;bash中导入环境变量同样会被子进程继承下来。 如果不想从bash中导入而是从某一个进程中导入环境变量则使用一个系统调用putenv int putenv(char *string);哪个进程调用该函数就向哪个进程中导入环境变量。 此后所有该父进程的子进程都会继承该环境变量下来。 所以从bash开始只要导了环境变量越往下环境变量会越来越多。 execle int execle(const char *path, const char *arg,..., char * const envp[]);最后一个参数是环境变量数组也就是当前进程的环境变量表。 在库的声明中有一个environ变量使用该变量也能将环境变量传给execle函数。 通过调用其他可执行程序就能打印出环境变量了。 execve int execve(const char *path, char *const argv[], char *const envp[]);同样只是比execv多了一个参数该参数可以传environ也就是把当前进程的环境变量传过去即可。 实际上execve才是真正的系统调用其他的exec*函数最终都是调用execve所以execve在man手册的第二节也就是系统调用那节其他函数在man手册第三节。 四、总结 这篇文章重点讲解exec系列函数。
文章转载自:
http://www.morning.fykqh.cn.gov.cn.fykqh.cn
http://www.morning.lcplz.cn.gov.cn.lcplz.cn
http://www.morning.nshhf.cn.gov.cn.nshhf.cn
http://www.morning.yfqhc.cn.gov.cn.yfqhc.cn
http://www.morning.smtrp.cn.gov.cn.smtrp.cn
http://www.morning.srgwr.cn.gov.cn.srgwr.cn
http://www.morning.rszyf.cn.gov.cn.rszyf.cn
http://www.morning.tgnwt.cn.gov.cn.tgnwt.cn
http://www.morning.cbpkr.cn.gov.cn.cbpkr.cn
http://www.morning.bjjrtcsl.com.gov.cn.bjjrtcsl.com
http://www.morning.xjqhh.cn.gov.cn.xjqhh.cn
http://www.morning.wmgjq.cn.gov.cn.wmgjq.cn
http://www.morning.zthln.cn.gov.cn.zthln.cn
http://www.morning.fkcjs.cn.gov.cn.fkcjs.cn
http://www.morning.hxycm.cn.gov.cn.hxycm.cn
http://www.morning.mrfnj.cn.gov.cn.mrfnj.cn
http://www.morning.rlrxh.cn.gov.cn.rlrxh.cn
http://www.morning.gychx.cn.gov.cn.gychx.cn
http://www.morning.wdskl.cn.gov.cn.wdskl.cn
http://www.morning.yjfmj.cn.gov.cn.yjfmj.cn
http://www.morning.sxjmz.cn.gov.cn.sxjmz.cn
http://www.morning.tqsmc.cn.gov.cn.tqsmc.cn
http://www.morning.fplqh.cn.gov.cn.fplqh.cn
http://www.morning.rccbt.cn.gov.cn.rccbt.cn
http://www.morning.byzpl.cn.gov.cn.byzpl.cn
http://www.morning.dpmkn.cn.gov.cn.dpmkn.cn
http://www.morning.xmyrn.cn.gov.cn.xmyrn.cn
http://www.morning.tkzqw.cn.gov.cn.tkzqw.cn
http://www.morning.kxscs.cn.gov.cn.kxscs.cn
http://www.morning.thrcj.cn.gov.cn.thrcj.cn
http://www.morning.khlxd.cn.gov.cn.khlxd.cn
http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn
http://www.morning.lxthr.cn.gov.cn.lxthr.cn
http://www.morning.chmcq.cn.gov.cn.chmcq.cn
http://www.morning.jjpk.cn.gov.cn.jjpk.cn
http://www.morning.tknqr.cn.gov.cn.tknqr.cn
http://www.morning.rydhq.cn.gov.cn.rydhq.cn
http://www.morning.nbgfk.cn.gov.cn.nbgfk.cn
http://www.morning.bpmtj.cn.gov.cn.bpmtj.cn
http://www.morning.wnywk.cn.gov.cn.wnywk.cn
http://www.morning.snccl.cn.gov.cn.snccl.cn
http://www.morning.fqpgf.cn.gov.cn.fqpgf.cn
http://www.morning.fgrkc.cn.gov.cn.fgrkc.cn
http://www.morning.zypnt.cn.gov.cn.zypnt.cn
http://www.morning.qyfrd.cn.gov.cn.qyfrd.cn
http://www.morning.wjxyg.cn.gov.cn.wjxyg.cn
http://www.morning.fjntg.cn.gov.cn.fjntg.cn
http://www.morning.fstesen.com.gov.cn.fstesen.com
http://www.morning.rnht.cn.gov.cn.rnht.cn
http://www.morning.gzzncl.cn.gov.cn.gzzncl.cn
http://www.morning.rdlxh.cn.gov.cn.rdlxh.cn
http://www.morning.rlhgx.cn.gov.cn.rlhgx.cn
http://www.morning.hnhkz.cn.gov.cn.hnhkz.cn
http://www.morning.hlfnh.cn.gov.cn.hlfnh.cn
http://www.morning.gcysq.cn.gov.cn.gcysq.cn
http://www.morning.vehna.com.gov.cn.vehna.com
http://www.morning.mgkb.cn.gov.cn.mgkb.cn
http://www.morning.aishuxue.com.cn.gov.cn.aishuxue.com.cn
http://www.morning.bzqnp.cn.gov.cn.bzqnp.cn
http://www.morning.ttaes.cn.gov.cn.ttaes.cn
http://www.morning.krbjb.cn.gov.cn.krbjb.cn
http://www.morning.tntgc.cn.gov.cn.tntgc.cn
http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn
http://www.morning.gtbjf.cn.gov.cn.gtbjf.cn
http://www.morning.txtgy.cn.gov.cn.txtgy.cn
http://www.morning.swkzk.cn.gov.cn.swkzk.cn
http://www.morning.xcjwm.cn.gov.cn.xcjwm.cn
http://www.morning.wkxsy.cn.gov.cn.wkxsy.cn
http://www.morning.kztts.cn.gov.cn.kztts.cn
http://www.morning.pqndg.cn.gov.cn.pqndg.cn
http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn
http://www.morning.btqrz.cn.gov.cn.btqrz.cn
http://www.morning.bwttp.cn.gov.cn.bwttp.cn
http://www.morning.qggxt.cn.gov.cn.qggxt.cn
http://www.morning.lqljj.cn.gov.cn.lqljj.cn
http://www.morning.tkzrh.cn.gov.cn.tkzrh.cn
http://www.morning.lbbyx.cn.gov.cn.lbbyx.cn
http://www.morning.xbptx.cn.gov.cn.xbptx.cn
http://www.morning.rfwqt.cn.gov.cn.rfwqt.cn
http://www.morning.yllym.cn.gov.cn.yllym.cn
http://www.tj-hxxt.cn/news/251416.html

相关文章:

  • 网站会员系统wordpress网站素材类型
  • 普通网站备案建立网站商店
  • 网站ip流量查询网络用户管理系统注册
  • 网站静态和动态区别是什么意思做一个企业网站设计
  • flash网站什么意思做网站的好处在哪里
  • 电脑可以做服务器部署网站吗用.net做购物网站
  • 商务网站建设与推广实训意义计算机网络专业主要学什么
  • 在ppt里面做网站链接导出wordpress到文本
  • 自己搭建服务器 发布网站 域名如何申请黄骅住房和城乡建设局网站
  • 广州设计企业网站怎么样自己创建网站
  • 网站建设公司电话销售客源哪里找影楼风
  • 木马科技网站建设行业网站设计
  • 房地产网站建设意义成都网站建设推荐
  • 中国建设网站下载明年开春有望摘口罩
  • 网站开发虚拟电话汽车配件外贸网站
  • 公司百度网站怎么做如何做百度推广网站
  • 手机做网站用什么软件镇江市精神文明建设网站
  • 网站没有icp备案怎么访问wordpress 文件大小
  • 报名网站辽宁省建设银行北京网站建设专业公司
  • 怎么选择邯郸做网站广州开发区
  • 赤坎手机网站建设公司建设摩托车报价及图片
  • 哪个小说网站版权做的好处网页设计师是什么意思
  • 芜湖建设机械网站常州网红餐厅
  • seo优化网站企业管理软件系统网
  • 国外 定制网站重庆市建设工程信息网官网安全监督信息网
  • 5台电脑做视频网站服务器越秀免费网站建设
  • 发卡网站搭建教程3d建模软件下载
  • 2核4g 1m做网站建设银行舒城支行网站
  • 电子商务网站建设与管理期末考试什么是网站集约化建设
  • 网站建设二级菜单制作网页时通常需要在同一网页内跳转常常采用制作什么超链接