营销型网站设计价格施工企业入外省名单公示

web/2025/10/5 16:22:36/文章来源:
营销型网站设计价格,施工企业入外省名单公示,海珠区pc端网站建设,网站建设php论文文章目录 minishell支持重定向minishell完整代码 minishell支持重定向 支持重定向的核心逻辑#xff1a; 1.分析字符串是否含有重定向的符号#xff0c;并且提取文件名。 #define INPUT_REDIR 0 //输入重定向 #define OUTPUT_REDIR 1 //输出重定向 #define APPEND_REDIR… 文章目录 minishell支持重定向minishell完整代码 minishell支持重定向 支持重定向的核心逻辑 1.分析字符串是否含有重定向的符号并且提取文件名。 #define INPUT_REDIR 0 //输入重定向 #define OUTPUT_REDIR 1 //输出重定向 #define APPEND_REDIR 2 //追加重定向 #define NONE_REDIR 4 //没有重定向 int redir_status NONE_REDIR;//状态char* CheckRedir(char* start) { assert(start); char* end start strlen(start)-1; //end执行指令的最后一个内容 while(start end) { if(*end ) { if(*(end -1) ) { //ls -a -llog.txt\0 追加redir_status APPEND_REDIR; *(end-1) \0; end; break; } //ls -a -llog.txt\0 输出redir_status OUTPUT_REDIR; *(end) \0; end; break;}else if(*end ){//ls -a -llog.txt\0 输入redir_status INPUT_REDIR;*end \0;end;break;}else {end--;}}//循环结束如果end还是大于start说明存在重定向if(end start){return end;}//走到这说明不存在重定向return NULL; }例子 end开始向前找重定向符 然后end 这样end指向的就是文件名start执行的就是指令内容。 然后就开始在子进程进行重定向了。 //printf(parent process create subprocess success\n); if(sep) { int fd -1; switch(redir_status) { case INPUT_REDIR: fd open(sep,O_RDONLY); dup2(fd,0); break; case OUTPUT_REDIR: fd open(sep,O_WRONLY | O_CREAT | O_TRUNC,0666); dup2(fd,1); break; case APPEND_REDIR: fd open(sep,O_WRONLY | O_CREAT | O_APPEND,0666); dup2(fd,1); break; default: assert(NULL); break; } }minishell完整代码 #include stdio.h #include string.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #include sys/wait.h #include stdlib.h #include assert.h#define NUM 1024 #define SIZE 32 #define SEP #define INPUT_REDIR 0 #define OUTPUT_REDIR 1 #define APPEND_REDIR 2 #define NONE_REDIR 4 int redir_status NONE_REDIR;char cmd_line[NUM];//array for saving command line char* g_argv[SIZE];//the array are used to store paresed commands char g_myval[64];char* CheckRedir(char* start) {assert(start);char* end start strlen(start)-1;while(start end) {if(*end ){if(*(end -1) ){//ls -a -llog.txt\0redir_status APPEND_REDIR;*(end-1) \0;end;break;}//ls -a -llog.txt\0 redir_status OUTPUT_REDIR;*(end) \0;end;break;}else if(*end ){//ls -a -llog.txt\0redir_status INPUT_REDIR;*end \0;end;break;}else {end--;}}if(end start){return end;}return NULL; } int main() {//1.命令行解释器一定是一个常驻内存的进程不退出while(1) {//2.显示提示行printf([xiaolinlocalhost myshell]#);fflush(stdout);memset(cmd_line,\0,sizeof cmd_line);//3.获取用户输入的字符串if(fgets(cmd_line,sizeof cmd_line,stdin) NULL){//if cmd_line empty contiue get commandcontinue;}cmd_line[strlen(cmd_line)-1] \0;char* sep CheckRedir(cmd_line);//4.对字符串进行解析int index 0;g_argv[index] strtok(cmd_line,SEP);//Firest parse cmd_line while(1)//Second parse cmd_line dont pass cmdline;{g_argv[index] strtok(NULL,SEP);if(g_argv[index] NULL) break;index;}if(strcmp(g_argv[0],ls) 0){g_argv[index] (char*)--colorauto;g_argv[index] NULL;} if(strcmp(g_argv[0],ll) 0){ g_argv[0] (char*)ls;g_argv[1] (char*)-l;g_argv[2] (char*)--colorauto;g_argv[3] NULL;}// processing of built-in commandsif(strcmp(g_argv[0],cd) 0){//chdir() changes the current working directory of the calling process to the directory specified in path.if(g_argv[1] ! NULL) chdir(g_argv[1]);continue;}if(strcmp(g_argv[0],export) 0 g_argv[1] ! NULL){//There is a very hidden issue here//Ptuenv passes an environment variable as a pointer to it //And g_ Argv [1] will be cleared on the next command_line read//In this way, the environment variable pointer points to a place with empty data, and this pointer is also a null pointer//int res putenv(g_argv[1]);//if(res 0) printf(export success\n);//else printf(export fail\n);//solve the problemstrcpy(g_myval,g_argv[1]);int res putenv(g_myval);if(res 0) printf(export success\n);else printf(expor fail\n);continue;}/*//test if the g_argv array id correct for(index 0; g_argv[index]; index){printf(g_argv[%d]:%s\n,index,g_argv[index]);}*///5.create subprocess execute commandpid_t id fork();if(id 0){//subprocess//printf(parent process create subprocess success\n);if(sep){int fd -1;switch(redir_status){case INPUT_REDIR:fd open(sep,O_RDONLY);dup2(fd,0);break;case OUTPUT_REDIR:fd open(sep,O_WRONLY | O_CREAT | O_TRUNC,0666);dup2(fd,1);break;case APPEND_REDIR:fd open(sep,O_WRONLY | O_CREAT | O_APPEND,0666);dup2(fd,1);break;default:assert(NULL); break;}}printf(subprocess starts running\n);execvp(g_argv[0],g_argv);printf(subprocess replace fail\n);}else if(id 0){//parent processint status 0;pid_t res waitpid(-1,status,0);//blocking waitingif(res -1){printf(parent process wait subprocess fail\n);}else if(res 0){printf(parent process wait subprocess success exit_code:%d\n,WEXITSTATUS(status));}else {printf(unkown error\n);}}else{//failprintf(parent procrss create subprocess fail\n);}}return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支付宝手机网站支付前端怎么做seo技术网网

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 SpringBoot之参数校验 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、参数校验的重要…

山东兴华建设集团有限公司网站个人邮箱163免费注册

最近开发组使用SVN更新时经常会提示403错误,上网查了好久,说是权限的问题,但我感觉不象,可以提交,可以迁出,但就是更新时报错,如果是权限的问题,那…

找工作网站哪个比较好教育集团网站设计策划书

发布/订阅是GCP提供的不错的工具。 它非常方便,可以帮助您解决应用程序可能面临的消息传递难题。 实际上,如果您使用GCP,则可以使用托管消息解决方案。 如预期的那样,使用实际的发布/订阅解决方案需要一定的配额,因此…

南昌做网站建设哪家好安徽省建设工程信息网施工许可证系统

cassandra生产监控我刚刚在健康市场科学(HMS)成立二周年之际,我们几乎一直在这里与Cassandra一起工作。 那时,我们遇到的问题很少。 就像我曾经使用过的其他几种技术一样,Cassandra“行之有效”。 但是,就…

网站维护升级页面网站分析表

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 这个写法还是第一次见到,也不知道是否还有什么环境配置,记录一下,或许以后什么时候也可以参考&#…

网站开发的分录怎么做电商类网站开发合同书

来源:大潘点点 概要:2018年大数据发展趋势预测 1、机器学习继续成为大数据智能分析的核心技术 2、人工智能和脑科学相结合,成为大数据分析领域的热点 3、数据科学带动多学科融合 4、数据学科虽然兴起,但是学科突破进展缓慢 5、推动…

泸州城建设档案管网站泉州大型网站建设

目录 创建远程仓库向远程仓库推送数据文件从第二台主机本地拉取远程仓库数据第一台主机同步远程仓库数据tag标签git忽略文件 Git远程仓库是Git版本控制系统的一个概念,它是一个存储Git代码的远程服务器。 你可以将本地Git仓库上传到远程仓库,以便与其他…

上海长宁建设和交通门户网站拍摄宣传片收费标准

面对巨大的数字经济市场,全球大部分企业都开始了数字化转型进程,国内一半以上的企业已经将数字化转型视为下一步发展重点,并制定了清晰的数字化转型战略规划。 但是,相当一部分传统行业,如制造、金融、能源、化工等非数…

网站建设的用途是什么移动端模板

近日,广西岑溪市玉梧大道紫坭工业园一厂房发生一起令人心痛的火灾事件,造成1人不幸丧生。这起悲剧再次提醒我们,火灾的防范工作是多么的重要。在这样的背景下,我想分享一个能够有效预防类似悲剧的技术——北京富维图像公司开发的F…

北京网站搜索引擎优化推广大宗商品电子交易平台

教育 -有机化学-章节资料考试资料-沈阳农业大学【】 1.1 有机化合物和有机化学随堂测验 1、【单选题】下列化合物中,不是有机化合物的是( ) A、叶绿素 B、 氯仿 C、尿素 D、 氨气 参考资料【 】 2、【单选题】下列不是有机化合物的特点的是&a…

创建一个个人网站wordpress关闭移动站点

信息安全组织管理目的是建立信息安全责任体系和定义组织内的信息安全责任,建立清晰的信息安全责任体系是实现信息安全目标的保证。 一、信息安全组织架构与职责定义 信息安全组织为跨部门协调组织,由信息安全领导组、信息安全管理组、信息安全执行组、…

最便宜做个网站多少钱微官网免费制作平台

游戏 服务器 微服务介绍 刚开始时,由于要求简单,所以应用程序既简单又小。 随着时间的要求和需求的增长,我们的应用程序变得越来越大,越来越复杂。 这就导致了将单片服务器开发和部署为一个单元。 在某种程度上,微服务…

设计网站横幅企业解决方案和应对措施的区别

MLC-机器学习编译-第一讲-机器学习编译概述课程主页:https://mlc.ai/summer22-zh/ 文章目录1.0 概述1.1 什么是机器学习编译1.2 为什么学习机器学习编译1.3 机器学习编译的关键要素1.3.1 备注:抽象和实现1.4 总结1.0 概述 机器学习应用程序已经无处不在…

网站建设业务平均工资新中式装修风格样板房

在之前的文章中我们了解到虚拟串口软件作为TCP客户端来结合串口服务器使用,这一期我们来看一下串口服务器怎样接入阿里云物模型。 步骤详尽,一文读懂。 1.阿里云MQTT环境配置 ③点击“创建产品”,配置产品名称,选择“自定义品类…

大埔县住房和城乡规划建设局网站公司企业做网站好做吗

前言: 目前,前后端分离开发已经成为当前web开发的主流。目前最流行的技术选型是前端vue3后端的spring boot3,本次。就基于这两个市面上主流的框架来开发出一套基本的后台管理系统的模板,以便于我们今后的开发。 前端使用vue3ele…

高端自适应网站国内简约网站设计

移动互联网时代,Facebook作为全球最大的社交媒体平台之一,早已成为企业、品牌和组织竞相角逐的营销阵地。而云手机的出现,则为Facebook营销注入了新的活力,其独特的优势让营销活动更加高效、精准且灵活。本文将深入探讨云手机在Fa…

自适应网站教程wordpress分类显示文章列表

🏡《总目录》 目录 1,概述2,工作原理2.1,材料特性2.2,温度升高2.3,温度降低2.4,数学模型3,结构特点3.1,磁芯3.2,线圈3.3,骨架3.4,绝缘材料4,工艺流程4.1,材料准

沂水县的旅游景区的网站建设企业为什么要建立自己的网站

如果你正在考虑使用JavaScript进行后端开发,你会听到“Node.js”这个术语。Node通常与开发功能强大的web服务器联系在一起。 但 Node.js 究竟是什么?它是和 Angular 一样的 JavaScript 框架吗?它是一种编程语言吗?它是 JavaScrip…

凡科建站模板安徽天长建设局网站

登陆时间:2019-10-21实现难度:★★★☆☆☆请求链接:https://passport.bilibili.com/login实现目标:模拟登陆哔哩哔哩,攻克滑动验证码涉及知识:滑动验证码的攻克、自动化测试工具 Selenium 的使用完整代码&…

asp.net网站建设项目实战 董义革网站排名做不上去

一、搭建环境 1、安装Slenium pip install selenium 2、安装浏览器驱动-》查询浏览器版本-》下载对应版本驱动-》在path路径中配置(浏览器更新需要重新下载) pip install webdriver -helper(自动化)python3.9以上 pip install 安…