东营可以做网站的公司在哪网站后台表格

pingmian/2026/1/22 20:52:29/文章来源:
东营可以做网站的公司在哪,网站后台表格,博达 网站群建设,百度快照网站目录 一#xff0c;跟正宗的bash见个面 二#xff0c;实现一个山寨的bash 1.提示符 2.输入命令与回显命令 3.解析命令 4.执行命令 5.执行逻辑 三#xff0c;全部代码 一#xff0c;跟正宗的bash见个面 在这篇文章中#xff0c;我会写一个myshell小程序。这个小程序… 目录 一跟正宗的bash见个面 二实现一个山寨的bash 1.提示符 2.输入命令与回显命令 3.解析命令 4.执行命令 5.执行逻辑 三全部代码 一跟正宗的bash见个面 在这篇文章中我会写一个myshell小程序。这个小程序其实就是一个解释器。在我的机器上它长这样     二实现一个山寨的bash 1.提示符 在图 中。这个提示符的信息可以分为四类 1.用户名    2.主机名   3.当前地址   4.其他字符 在这个图片里cq就是用户名  VM-8-9-centos就是主机名   mybash就是当前所在路径。 那我们该如何获取呢两条路1.其它字符直接打印  2.用户名等用环境变量获取。代码如下 #includestdio.h #includestdlib.h//getenv的头文件 const char* Username()//获取用户名 { const char* user getenv(USER); if(user) return user; return none; } const char* Hostname()//获取主机名 { const char* host getenv(HOSTNAME); if(host) return host; return none; } const char* Pwd() //获取当前地址 { const char* pwd getenv(PWD); if(pwd) return pwd; return none; } int main() { printf([%s%s %s]#\n,Username(),Hostname(),Pwd()); return 0; } 效果 可以看到我们当前的提示符显示是可以成功的。 2.输入命令与回显命令 想到输入和显示命令时我猜很多同学的脑子里第一个想到的便是scanf和printf。但是在这里我们是不能使用scanf的。因为我们在输入命令的时候一定会遇到输入空格的情况如ls -a -l命令等等。但是scanf在遇到空格的时候便会停下。所以我们不能使用scanf进行读取数据。所以我们采用gets或者fgets来读取数据。    这两个函数介绍如下 gets函数是将键盘上的输入读取到str缓冲区里存起来。 fgets的功能跟gets一样这三个参数的意思如下1.str表示存储读取到数据的地方 2.num 存储的最大数据量  。 3.stream表示从何读取键盘读取则为stdin。 写出代码如下 char buff[1024]\\一般将这个数组定义为全局的fgets(buff,sizeof(buff),stdin); buff[strlen(buff)-1] \0; \\将回车符给吞掉 printf(%s\n,buff); 封装函数如下 void getCommand() { fgets(buff,sizeof(buff),stdin); buff[strlen(buff)-1] \0; } 效果 3.解析命令 在这里解析命令的意思便是将一个长字符串以空格为分隔符分割成一个一个短的字符串。比如ls -a -l就应该分成ls -a -l。在这里我们要使用到一个字符串分割函数: 这个函数的参数str表示要分割的字符串  delimiters表示分割符。并且要注意的是当我的第一次分割成功以后我后面的连续分割就可以将str用NULL表示。先在写出代码如下 void splictCommand(char* in,char* out[]) \\注意这里的参数in是buff,out是char* argv。这两个参数都定义在全局 { int argc 0; out[argc] strtok(in,SEP); while(out[argc] strtok(NULL,SEP)); #ifdef Debug \\用来测试 for(int i 0;out[i];i) printf(%d:%s\n,i,out[i]); #endif } 效果分割完成 4.执行命令 在完成输入和解析命令以后我们就得来执行命令了。我们如何实现命令的执行呢 1.创建子进程    2.使用程序替换。 在这里要了解的是有一些命令是必须要让父进程来执行的。比如cd export echo等。这些命令叫做内建命令。还有一些命令则不需要由父进程来来执行而是要交由子进程来执行。所以我们得创建子进程。 在执行命令的时候步骤如下 1.先检查是否是内建命令若是便执行并且返回一个1。若不是便返回0。 代码 int dobuildin(char* argv[]){if(strcmp(argv[0],cd) 0)//cd是内建命令{char* path NULL;if(argv[1] NULL) path getHome();else path argv[1];cd(path); return 1;}else if(strcmp(argv[0],export) 0)//export是内建命令{if(argv[1] NULL) return 1; strcpy(enval,argv[1]);putenv(enval);return 1;}else if(strcmp(argv[0],echo)0)//echo是内建命令{ if(argv[1] NULL){printf(\n);}else{if(argv[1] NULL) {printf(\n);return 1;}if(*(argv[1])$strlen(argv[1])1){char* val argv[1]1;if(strcmp(val,?)0){printf(%d\n,lastcode);lastcode 0;}else printf(%s\n,getenv(val));}else{printf(%s\n,argv[1]);}return 1;}}return 0;//不是内建命令便返回0}然后才是执行其它命令 void excute(char* argv[]){pid_t id fork();//创建子进程if(id 0)//子进程执行程序替换{execvp(argv[0],argv);exit(1);//执行完便可以退出}else {int status 0;pid_t rid waitpid(id,status,0);//等待子进程if(rid0){//等待成功lastcode WEXITSTATUS(status);//获取最后一次的退出码}}}执行逻辑 n dobuildin(argv);//检查并执行内建命令if(n) continue;excute(argv);//子进程执行命令这两个函数的执行顺序如上。如果内建命令执行成功在这一次便可以不再执行下面的普通命令的代码。如果不成功便可以执行下面的普通命令的代码。 5.执行逻辑 int main(){while(1){ char Usercommand[NUM];int n getCommand(Usercommand,sizeof(Usercommand));//获取命令if(n0) continue;char* argv[SIZE];splictCommand(Usercommand,argv);//将命令打散放到数组中 n dobuildin(argv);//检查并执行内建命令if(n) continue;excute(argv);//子进程执行命令}return 0;}三全部代码 #includestdio.h #includestdlib.h//getenv的头文件 #includestring.h #includeunistd.h//fork的头文件 #includesys/types.h//要使用pid_t必须包含的头文件 #includewait.h#define Debug 1 char buff[1024]; char* argv[64]; char enval[1024];//用来存储全局的环境变量 char cwd[1024]; int lastcode 0;#define SEP const char* Username()//获取用户名 {const char* user getenv(USER);if(user) return user;return none; }const char* Hostname()//获取主机名 {const char* host getenv(HOSTNAME);if(host) return host;return none; }const char* Pwd() {const char* pwd getenv(PWD);if(pwd) return pwd;return .; }char* getHome() {char* home getenv(HOME);if(home) return home;return(char*) none; }int getCommand() {printf([%s%s %s]#,Username(),Hostname(),Pwd());char* str fgets(buff,sizeof(buff),stdin);buff[strlen(buff)-1] \0;if(str) return strlen(str)-1;return -1; }void splictCommand(char* in,char* out[]) {int argc 0;out[argc] strtok(in,SEP);while(out[argc] strtok(NULL,SEP)); #ifdef Debugfor(int i 0;out[i];i)printf(%d:%s\n,i,out[i]); #endif }void cd( char* path) {if(path NULL){path getHome();}int i chdir(path);printf(%d\n,i);char temp[1024];getcwd(temp,sizeof(temp));//获取pwd并放到临时变量temp中sprintf(cwd,PWD%s,temp);将pwd放到全局变量cwd中putenv(cwd);//用cwd替换掉PWD内的内容实现改变PWD的目的 }int dobuildin( char* argv[]) {if(strcmp(argv[0],cd) 0){char* path argv[1]; cd(path);return 1;}else if(strcmp(argv[0],export) 0){char* val argv[1];if(val NULL) return 1;strcpy(enval,val);putenv(enval);return 1;}else if(strcmp(argv[0],echo) 0){if(*argv[1]$strlen(argv[1])1){char* val argv[1]1;//$?,$PATHif(strcmp(val,?)0){printf(%d\n,lastcode);//显示最近一次错误码lastcode 0;return 1;} else {printf(%s\n,getenv(val));} }else{printf(%s\n,argv[1]);}return 1;}return 0; }void excute(char* argv[]) {pid_t id fork();if(id 0)//子进程 {execvp(argv[0],argv);exit(1);}else//父进程{int status 0;pid_t rid waitpid(id,status,0);//等待子进程if(rid0){lastcode WEXITSTATUS(status); //获取退出码} } }int main() {while(1){int n getCommand();if(n0) continue;splictCommand(buff,argv);n dobuildin(argv);if(n) continue;excute(argv); }return 0; }

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

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

相关文章

国家建设部投诉网站建设部监理协会网站

描述 输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。 输入描述 输入包含两行,第一行包含一个正整数n(1 ≤ n…

海南医院网站建设乐清建设路小学网站

1、场景通常,使用eclipse的mat图形化工具打开dump的时候都会内存溢出.对于比较小的dump,eclipse可以打开,但一旦dump文件太大,eclipse就有点束手无策。这时候怎么办呢?可以使用linux下的mat,既Memory Analy…

fzzz主题wordpress网站优化建设扬州

在Jupyter-lab中使用RDKit画分子2D图 在做完分子对接后,想看看筛选后的分子的结构。因此想利用Jupyter-lab来画分子的2D图。 1. 安装Jupyter-lab与RDKit 系统:Win11已安装conda RDKit 是一个功能强大、灵活易用的化学信息学工具包,广泛应…

潍坊哪家网站制作公司好网站建设需要上传数据库吗

自诞生以来,OpenStack 似乎一直被质疑,其背后最重要的两大推手 NASA 和 Rackspace 都弃它而去,惠普、思科接连宣布关闭基于 OpenStack 的公有云服务,但是,OpenStack 依旧坚挺。1Q:openstack介绍A:openstack…

家教网站建设沈阳网站建设策划方案

我们都熟悉电视遥控器,它有许多按钮,每个按钮都有确定的功能。你按下电源键电视就会打开,再按下一次电视就会关闭。编程世界里也有这种模式,这就是我们说的命令模式。 命令模式是一种设计模式,它把一个请求或操作封装…

个人域名可以做企业网站吗信阳新网站做seo优化

forEach、filter、map都可以遍历数组,那么三者有什么区别? 区别: forEach遍历数组全部元素,利用回调函数对数组进行操作,不会返回新的数组,return只用于控制循环是否跳出当前循环; filter返回一个新的数组&#xff0…

企业网站建设上市公司WordPress评论加入ip

dhtmlxScheduler是一个类似于Google日历的JavaScript日程安排控件,日历事件通过Ajax动态加载,支持通过拖放功能调整事件日期和时间,事件可以按天,周,月三个种视图显示。 DHTMLX Scheduler正式版下载 在本教程中&…

宁波网站建设流程有哪些wordpress做相册

目录 思路 框架​编辑 读取操作 数据操作 绘制画面 游戏的数据结构 用二维数组来模拟棋盘格 赢的情况 平局情况 Code 代码细节部分 (1)初始化棋盘格 (2) 初始化棋子类型​编辑 事件处理部分 落子 框架内代码的完善 数据处…

合肥企业网站建设工作室西安优秀的集团门户网站建设服务商

目录 题目部分 解析与思路 代码实现 题目部分 题目TLV编码题目说明TLV编码是按[Tag Length Value]格式进行编码的,一段码流中的信元用Tag标识,Tag在码流中唯一不重复,Length表示信元Value的长度,Value表示信元的值。 码流以某…

phton可以做网站吗微软雅黑做网站是否侵权

目录 一、前言 二、hive 运算符分类 三、hive 运算符操作演示 3.1 数据准备 创建表dual 加载一个文件dual.txt到dual表中 模拟测试 3.2 关系运算符 is null空值判断 is not null 非空值判断 like使用 3.3 算术运算符 取整操作 取余操作: % 位与操作: & …

零六年自助建设网站android应用商店

1、原因:kafka是一个去中心化结果的,所以在启动Kafka的时候,每一个节点上都需要启动。 启动的命令:kafka-server-start.sh -daemon /usr/local/soft/kafka_2.11-1.0.0/config/server.properties

有经验的武进网站建设大众点评如何做团购网站

动画是使元素从一种样式逐渐变化为另外一种效果,CSS3动画的生成,主要依赖keyframes定义动画,animation执行动画。 keyframes 通过 keyframes 规则创建动画。 keyframes keyframes-name {keyframes-selector {css-styles;}}keyframes-name 帧…

建设银行网站在哪里修改支付密码清理wordpress模板

Modbus协议在应用中一般用来与PLC或者其他硬件设备通讯,Modbus集成到IoTBrowser使用串口插件模式开发,不同的是采用命令函数,具体可以参考前面几篇文章。目前示例实现了Modbus-Rtu和Modbus-Tcp两种,通过js可以与Modbus进行通讯控制…

买链接网站做ppt音乐模板下载网站

YOLO介绍 YOLO,全称为You Only Look Once: Unified, Real-Time Object Detection,是一种实时目标检测算法。目标检测是计算机视觉领域的一个重要任务,它不仅需要识别图像中的物体类别,还需要确定它们的位置。与分类任务只关注对…

动态门户网站建设价格网站后台管理系统一般用户名是什么

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 90nm 及以下的工艺都要求储存器,IP,IO 的多晶硅方向必须和标准单元的多晶 硅方向保持一致,无法像过去工艺一样随意旋转方向。在 22nm 及以下…

服饰类网站模板网站框架都有什么用

一、选择题 1.组成数据的基本单位是()。 A. 数据项 B.数据类型 C.数据元素 D.数据变量 2.设数据结构A{D,R},其中D&#xff5b;1,2,3,4},R{r},r{<1,2>,<2,3>,< 3,4>,<4,1>}&#xff0c;则数据结构A是()。 A.线性结构 B.树型结构 C.图型结构 D.集合 3.…

温州高端企业网站建设电子商务营销师

1.什么是微服务? 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可…

福田网站建设设计公司深圳市富通建设工程有限公司网站

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你两个长度为nnn的串a,ba,ba,b&#xff0c;每次可以同时翻转a,ba,ba,b中任意一段长度为L(1≤L≤n)L(1\le L\le n)L(1≤L≤n)的子串&#xff0c;问能否通过若干次操作使两个串相同。 思路&#xff1a; 首…

网站开发如何搭建框架如何建设网站使用

QuestMobile2020数据显示&#xff0c;疫情发生以来&#xff0c;每个网民每天花在移动互联网的时长比年初增加了21.5%&#xff0c;对于视频类应用增长尤为突出。而短视频用户规模已超8.5亿&#xff0c;用户使用时长在移动互联网用户使用总时长占比已达10.5%&#xff0c;仅次于社…

河北网站设计成功柚米科技深圳自己做网站 服务器

图解taxize 1. taxize分解思路1.1 图解说明 2. 针对不同数据库的函数组2.1 APGⅢ2.2 BOLD&#xff08;barcode of life data system&#xff09; 1. taxize分解思路 taxize可以帮助人们从许多数据库中获取信息。 由于要处理的数据库很多&#xff0c;导致taxize包含的功能函数…