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

响应式网站建设多少钱金华外贸网站建设

响应式网站建设多少钱,金华外贸网站建设,网线制作步骤及方法七个步骤,与网站设计相关的软件主要有目录 一、Shell外壳概述 二、描述Shell外壳原理的生动例子 三、C语言模拟实现Shell外壳 一、Shell外壳概述 在狭义上 , 我们称Linux操作系统的内核为 Linux 在广义上 , Linux发行版 Linux内核 外壳程序 就比如市面上现在的redhat, centos, ubuntu等等我们耳熟能详的Linux发…目录 一、Shell外壳概述 二、描述Shell外壳原理的生动例子 三、C语言模拟实现Shell外壳 一、Shell外壳概述 在狭义上 , 我们称Linux操作系统的内核为 Linux 在广义上 , Linux发行版 Linux内核 外壳程序 就比如市面上现在的redhat, centos, ubuntu等等我们耳熟能详的Linux发行版事实上这些Linux发行版都是基于Linux操作系统的内核然后对之加装了不同的Shell外壳 最终做出不同种类的Linux发行版。 我们作为用户是不能直接去操作Linux内核的为什么呢 直接去操作Linxu内核成本是极高的学习成本、操作成本都不低用户直接操作Linux内核存在风险所以Linux内核对用户设置了权限限制 所以我们有了shell外壳程序来间接帮助我们操作Linux内核。 windows操作系统的Shell外壳是一个窗口图形界面所以我们可以通过这个窗口图形接收来自用户的点击、拖拽等操作从而使用windows的各个功能。 Linux操作系统的Shell外壳的名字叫bash所以我们也可以通过bash来传达我们的操作即用户对bash输入指令,从而使用Linux操作系统的功能。 简单的说Shell外壳程序是对Linux内核的一层封装 , 架起了用户和Linux沟通的桥梁。 命令行解释器 在大多数Linux发行版本中是没有图形化界面的那么Shell是如何帮助用户和Linux内核进行沟通的呢答案是命令行解释器也就是小黑框。命令行解释器就是Shell外壳在Linux系统中的具体表现。 命令行解释器上每一行都有输入指令的提示用户输入指令和选项之后Shell外壳接收并解析该指令然后发送给Linux内核去处理执行Linux内核处理之后将结果反馈给Shell外壳Shell外壳将结果解析返还给用户。 二、描述Shell外壳原理的生动例子 从前有座山山里有座村村里有个老村长而你是村长的儿子——王二狗。同时你们村还有个远近闻名的媒婆——王婆在你们当地有非常不错的口碑曾撮合成功了无数对男女。 你作为村长的儿子也老大不小了也到了该找对象的年纪。你作为一个纯情的男人心理自然还想着你们村的如花姑娘。 但是你还是一个害羞的小男生不方便也不敢直接去和如花姑娘直说所以你就只得找王婆来代为传递你的信息。 这天你找到了王婆说你想找如花姑娘相亲王婆说可以帮你办这件事然后她就把你想找如花姑娘约会这件事告诉了如花姑娘。如花姑娘说不行她说她并不认识王二狗不想和他相亲。于是王婆就很直白的告诉你说如花姑娘压根不想和你相亲你还是放弃吧。 所以王婆便是沟通你和如花姑娘的桥梁类比用户和操作系统内核之间的媒介作用。 你心想作为一个纯情的男人我是不会放弃的所以这天你有找到王婆说再帮我问问看吧我真的很喜欢如花姑娘[大哭]。 王婆说好吧那我再给你传达最后一次不过不出所料结局再次上演如花再次拒绝王婆又把这个残忍的事实传达给你。 这时你还是放不下有跟王婆说能不能再再帮我问一次。王婆此时直接拒绝了说不要再这样子了这样如花姑娘会不堪其扰内心厌烦且痛苦的王婆顾及如花姑娘的感受事实上也是在保护如花姑娘防止你亲自去找她做出极端的事情。 所以王婆拥有拒绝传达信息的权利类比Shell外壳可以拒绝一些非法的请求从而保护os。 不过故事仍然没有结束你可是村长的儿子啊你的一再要求王婆肯定会考虑到村长的面子。但是王婆也得考虑到自己的口碑不能因为这件事把招牌给砸了毕竟还忙着给其他男女说媒呢。 所以这时王婆想到一个绝妙的对策招一个实习生来办这件事王婆让我的实习生来给你办这件事吧我溜了哦~。 实习生办这件事对王婆来说有两个好处一是王婆可以跟村长交代这件事她一直在办着只不是是她的实习生在负责二是就算实习生办砸了这件事也没关系反正只要不是她王婆办的这个招牌就不会砸。 王婆可以找实习生执行难度大的任务类比Shell外壳可以创建子进程去执行有风险的任务从而不影响Shell外壳。 总结 Shell外壳是对Linux内核的封装连接沟通了用户(需求)与Linux内核(执行)这降低了用户的操作学习成本。 Shell外壳可以传达用户指令交给操作系统内核去执行最终把执行结果反馈给用户。 同时Shell外壳也可以直接拒绝用户从而保护操作系统内核。 Shell外壳也可以通过创建Shell外壳程序的子进程的方式来执行有风险的指令从而来保护bash即Shell外壳本身。 三、C语言模拟实现Shell外壳 命令行解释器 输出提示获取用户输入执行命令 核心算法字符串切割、进程替换、环境变量调用、重定向 源代码 #include stdio.h #include stdlib.h #include unistd.h #include sys/types.h #include sys/wait.h #include sys/stat.h #include fcntl.h #include assert.h #include string.h #include ctype.h #include errno.h#define NUM 1024 #define OPT_NUM 64#define NONE_REDIR 0 #define INPUT_REDIR 1 #define OUTPUT_REDIR 2 #define APPEND_REDIR 3char commandLine[NUM]; char* myArgv[OPT_NUM]; int lastCode 0; int lastSig 0;int redirType NONE_REDIR; char* redirFile NULL;// 跳过空格 void skip_space(char* start) {while (isspace(*start)){start;} }// 检查命令行是否是输入输出重定向 void command_check(char* commands) {assert(commands);char* start commands;char* end commands strlen(commands);while (start end){if (*start ){*start 0;start;if (*start ){// 追加输出重定向// ls -a -l test.txtredirType APPEND_REDIR;start;}else{// 覆盖输出重定向// ls -a -l test.txtredirType OUTPUT_REDIR;}skip_space(start);redirFile start;break;}else if (*start ){// 输入重定向// cat test.txt*start 0;start;skip_space(start);redirType INPUT_REDIR;redirFile start;break;}else {start;}} }int main() {while (1){redirType NONE_REDIR;redirFile NULL;// 输入提示符char* pwd getenv(PWD);char* token strtok(pwd, /);char* dir token;while (token ! NULL){dir token;token strtok(NULL, /);}char* user getenv(USER);if (strcmp(user, root) 0){printf([%s%s %s]# , user, getenv(HOSTNAME), dir);}else{printf([%s%s %s]$ , user, getenv(HOSTNAME), dir);}fflush(stdout);// 获取用户输入fgets(commandLine, sizeof(commandLine) - 1, stdin);commandLine[strlen(commandLine) - 1] 0;command_check(commandLine);// 字符串切割myArgv[0] strtok(commandLine, );int i 1;// 添加、更改参数if (myArgv[0] ! NULL strcmp(myArgv[0], ls) 0){myArgv[i] (char*)--colorauto;}if (myArgv[0] ! NULL strcmp(myArgv[0], ll) 0){myArgv[0] (char*)ls;myArgv[i] (char*)-l;myArgv[i] (char*)--colorauto;}// 存储参数while (myArgv[i] strtok(NULL, )){}// 如果是 cd 指令无需创建子进程// 让 shell 执行对应的命令本质是是执行系统接口 // 这种不需要子进程执行而是让 shell 自己执行的命令叫做内置/内建命令if (myArgv[0] ! NULL strcmp(myArgv[0], cd) 0){if (myArgv[1] ! NULL){chdir(myArgv[1]); // 跳转目录char tmp_path[1024] {0};getcwd(tmp_path, sizeof(tmp_path) - 1); // 将当前工作目录存入tmp_path中setenv(PWD, tmp_path, 1); // 修改环境变量}else{chdir(getenv(HOME));setenv(PWD, getenv(HOME), 1);}continue;}if (myArgv[0] ! NULL myArgv[1] ! NULL strcmp(myArgv[0], echo) 0){if (strcmp(myArgv[1], $?) 0){// 查看上一条指令的退出码、退出信号printf(last exit code: %d, last exit sig: %d\n, lastCode, lastSig);}else{printf(%s\n, myArgv[1]);}continue;}// 执行命令pid_t id fork();if (id 0){// 命令由子进程执行重定向的工作由子进程完成// 父进程给子进程提供信息重定向int fd 0;switch (redirType){case NONE_REDIR:break;case INPUT_REDIR:fd open(redirFile, O_RDONLY);if (fd 0){perror(open);exit(errno);}dup2(fd, 0);break;case OUTPUT_REDIR:case APPEND_REDIR:umask(0);int flags O_WRONLY | O_CREAT;if (redirType APPEND_REDIR){flags | O_APPEND;}else{flags | O_TRUNC;}fd open(redirFile, flags, 0666);if (fd 0){perror(open);exit(errno);}dup2(fd, 1);break;default:printf(bug\n);break;}execvp(myArgv[0], myArgv);exit(1);}// 父进程int status 0;pid_t ret waitpid(id, status, 0);assert(ret 0);lastCode (status 8) 0xFF;lastSig status 0x7F;}return 0; }
http://www.hkea.cn/news/14305810/

相关文章:

  • 两学一做教育考试网站免费网页设计作品
  • 常州网站推西安市城乡建设档案馆网站
  • 海南省建设考试网站公司介绍模板图片
  • wordpress仿站标签宁波北京网站建设
  • 网站引导页怎么做边个网站可以接模具做
  • 用什么网站做浏览器主页怎样快速建设网站模板
  • 北京市住房建设投资中心网站网站浏览图片怎么做
  • 开网站空间流量怎么选择wordpress 输入框
  • 六安网站自然排名优化价格做淘宝有哪些货源网站
  • 网站在阿里云备案流程推荐10网站
  • 怎么做网站推广林芝地区工作室logo设计
  • 淘宝客做网站链接康保网站制作
  • 河南郑州app建设网站建筑工人找活的平台app
  • 机关网站建设创新北京专业网站制作技术
  • 室内设计找工作网站天津企悦在线网站建设
  • 深圳专业商城网站制作网站建设首页包括什么
  • 所有网站名称大全网站建设开票应该开哪个行业
  • 自己做刷东西的网站wordpress 旋转预加载
  • 房产网站建设接单建网站的每年有费用
  • 长沙网站制作教程编程是学什么东西的
  • 汕头h5建站一个专门做试题的网站
  • 晋城市公共事业建设局网站如何建站网站
  • 个人信息网站建设的心得体会和县网站开发
  • 苏州企业网站制作多少钱做网站站怎么赚钱吗
  • 洛阳网站的优化网页游戏排行nvsheng
  • 企业门户网站的建设费用广州网站建设+致茂
  • 信息网站建设网站建设话语
  • 如何自己建公司网站自己做的网站邮箱更改密码程序为什么总出错
  • 佛山门户网站建设wordpress调用百度网盘视频
  • 玩具网站建设策划书国内网站建设的趋势是怎样的