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

桐庐建设局网站网站的建设域名空间

桐庐建设局网站,网站的建设域名空间,永顺网站建设,做seo怎么设计网站目录 1. 程序替换的原因 2. 程序替换原理 3. 替换函数 4. 函数解释 5. 命名理解 6.简陋版shell的制作 补充#xff1a; Linux#x1f337; 1. 程序替换的原因 进程自创建后只能执行该进程对应的程序代码#xff0c;那么我们若想让该进程执行另一个“全新的程序”这 便要用… 目录 1. 程序替换的原因 2. 程序替换原理 3. 替换函数 4. 函数解释 5. 命名理解 6.简陋版shell的制作 补充  Linux 1. 程序替换的原因 进程自创建后只能执行该进程对应的程序代码那么我们若想让该进程执行另一个“全新的程序”这 便要用到程序替换技术。 2. 程序替换原理 用 fork 创建子进程后执行的是和父进程相同的程序 ( 但有可能执行不同的代码分支 ), 子进程往往要调 用一种 exec 函数以执行另一个程序。当进程调用一种exec 函数时 , 该进程的用户空间代码和数据完 全被新程序替换 , 从新程序的启动例程开始执行。调用exec 并不创建新进程 , 所以调用 exec 前后该进 程的 id 并未改变。 程序替换图解如下 3. 替换函数 其实有六种以 exec 开头的函数 , 统称 exec 函数都可以达到进程替换的目的。 #include unistd.h//path路径文件名 //file文件名 int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, ...,char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]); 4. 函数解释 这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回如果调用出错则返回-1所以exec函数只有出错的返回值而没有成功的返回值。 5. 命名理解 这些函数原型看起来很容易混 , 但只要掌握了规律就很好记。 l(list) : 表示参数采用列表v(vector) : 参数用数组p(path) : 有p自动搜索环境变量PATHe(env) : 表示自己维护环境变量 exec 调用举例如下 : #include unistd.hint main() {char *const argv[] {ps, -ef, NULL};char *const envp[] {PATH/bin:/usr/bin, TERMconsole, NULL};execl(/bin/ps, ps, -ef, NULL);// 带p的可以使用环境变量PATH无需写全路径execlp(ps, ps, -ef, NULL);// 带e的需要自己组装环境变量execle(/bin/ps, ps, -ef, NULL, envp);execv(/bin/ps, argv);// 带p的可以使用环境变量PATH无需写全路径execvp(ps, argv);// 带e的需要自己组装环境变量execve(/bin/ps, argv, envp);exit(0); } 事实上 , 只有 execve 是真正的系统调用 , 其它五个函数最终都调用 execve, 所以 execve 在 man 手册第 2 节 , 其它函数在man手册第 3 节。这些函数之间的关系如下图所示 6.简陋版shell的制作 #include stdio.h #include stdlib.h #include string.h #include sys/wait.h #define NUM 128 #define CMD_NUM 64 int main() { char command[NUM]{0}; for(;;) { printf([renhahamini_shell mydir#]); fflush(stdout); fgets(command,NUM,stdin); command[strlen(command)-1]\0; const char* sep ; char* argv[CMD_NUM]{NULL}; argv[0]strtok(command,sep); int i1; while(argv[i]strtok(NULL,sep)) { i; } if(strcmp(argv[0],cd)0) { if(argv[1]!NULL) chdir(argv[1]); } if(fork()0) { execvp(argv[0],argv); exit(1); } waitpid(-1,NULL,0); } return 0; } 补充 makefile一次make多个文件 坚持打卡
http://www.dnsts.com.cn/news/41755.html

相关文章:

  • crm系统 网站建设关于申请建设门户网站的
  • 网站后台管理模板免费下载在线crm系统价格
  • 射击游戏网页版seo基础篇
  • 一般网站服务器配置广宁网站建设
  • 网站制作需要多少钱官网wordpress如何屏蔽特定国家的用户
  • 做 个收废品网站漫威网页制作教程
  • 外汇直播室都是网站做创网站 设计方案
  • 网络彩票的网站怎么做搜索大全搜索引擎
  • 东莞建站网站建设产品推广wordpress建两个网站吗
  • 个人政务公开网站建设工作总结宝塔搭建wordpress访问很慢
  • 杭州公司的网站建设公司做网站后有人抢注关键词
  • 国外做油画的网站广州h5设计网站公司
  • 该网站无备案8小8x人2022成免费入口
  • 一个人能建网站吗济宁营销网站建设
  • 上线了 网站山东人才招聘网
  • 天津公司网站Wordpress 标签无用
  • 重庆实惠网站建设智通人才网东莞最新招聘信息
  • 灵溪网站建设学校网站建设教程
  • 自己切片视频做网站玉树州网站建设公司
  • 做网签合同的网站是本地论坛
  • 南阳旅游网站建设明星网页网站制作
  • 平顶山网站建设申请域名需要哪些资料
  • 怎么做网站后缀识别符号才不会变聊城手机网站建设电话
  • 淄博市沂源县建设局网站图片制作动画
  • 个人可以网站备案吗网站推广和宣传的方法
  • 网站首页模板图片黄山最佳旅游攻略
  • 获取网站访客qq 原理安徽省建设厅门户网站
  • 苏州seo建站app在线制作平台有哪些
  • 做生物学的网站网络营销是以什么为基础
  • 毕节网站建设海南省生态文明村建设促进会网站