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

网站建设制作哪家好电子商务网站开发基本流程图

网站建设制作哪家好,电子商务网站开发基本流程图,南京关键词seo公司,深圳市住房和建设局工程交易服务中心目录 前言 一、打印提示信息 二、分割字符串 三、替换程序 前言 之前学习了很多进程相关的知识,包括环境变量、进程的创建与退出、进程等待、进程替换。现在可以用所学的作一个小总结,手撕一个shell解释器,大致的思路是先通过环境变量获…

目录

前言

一、打印提示信息

二、分割字符串

三、替换程序


前言

之前学习了很多进程相关的知识,包括环境变量、进程的创建与退出、进程等待、进程替换。现在可以用所学的作一个小总结,手撕一个shell解释器,大致的思路是先通过环境变量获取相关信息,再通过fork创建子进程并进行程序替换,bash的命令。

一、打印提示信息

当我们链接上虚拟机,就会有这一行输出到屏幕上,告诉我们可以开始输入命令了。首先我们得把提示写出来。

环境变量中有用户名、主机号、当前目录等信息,我们可以通过 getenv 获取相关信息进行打印。

同时,我们输入命令会有很多空格存在,比如 ls -a -l。因此不能用scanf获取输入信息,可以用fgets,第三个参数为stdin(标准输入)。最后输入完毕后会输入回车换行,我们将最后一个字符设置为  '\0'  代表字符串的结束,同时也避免了换行。

#inlcude<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#define NUM 1024char* getUsername()
{char* env = getenv("USER");if(env) return env;return NULL;
}char* getHostname()
{char* env = getenv("HOSTNAME");if(env) return env;return NULL;
}char* getPwd()
{char* env = getenv("PWD");if(env) return env;                                            return NULL;
}int main()
{char command[NUM];printf("[%s@%s %s]$ ",getUsername(),getHostname(),getPwd());//打印fgets(command,NUM,stdin);  //输入完成后还会输入回车,导致换行command[strlen(command)-1] = '\0'; printf("%s",command);  // 打印看看是否获取到了完整的字符串
}

运行结果如下,获取了完整了字符串。

二、分割字符串

分割字符串C语言可以用strtok函数,他第一个参数为需要分割的字符串,第二个参数是按什么字符进行分割。如果想继续往后分割同一字符传,后续需要将第一个参数设置为NULL。

分割成功返回值为分割出来的字符串,如果分割失败,返回0。

我们先分割一次字符串,放到数组argv里,后面使用while循环一直进行分割,由于分割失败返回0,自然而然就退出了。下面是打印代码,看看结果是否正确。

成功分割。

三、替换程序

fork出子进程,然后使用execvp进行程序替换,第一个参数为argv[0],比如你输入ls -a -l,他会自己去path路径里面查找 ls 是否存在,第二个参数为agrv,整个数组放进去,是命令行参数。这里写简单一点,没有处理等待失败的情况。

成功进行替换。 

最后给他套上循环,一个建议的shell就做好了。我们写的比较简单,有很多bug,功能还不算完善,但是勉强也算够用。

附上总代码 

  #include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#define NUM 1024#define SIZE 64char* getUsername(){char* env = getenv("USER");if(env) return env;return NULL;}char* getHostname(){char* env = getenv("HOSTNAME");if(env) return env;return NULL;}char* getPwd(){char* env = getenv("PWD");if(env) return env;return NULL;}int main(){while(1){char command[NUM];char* argv[SIZE];int argc = 0;printf("[%s@%s %s]$ ",getUsername(),getHostname(),getPwd());//打印fgets(command,NUM,stdin);  //输入完成后还会输入回车,导致换行command[strlen(command)-1] = '\0';argv[argc++] = strtok(command," ");while(argv[argc++] = strtok(NULL, " "));pid_t id = fork();if(id == 0){//childexecvp(argv[0],argv);exit(1);}else{pid_t rid = waitpid(id,NULL,0);if(rid>0) printf("等待成功\n");}}}

这里完善了一下代码,添加了重定向,在大标题“四”。

http://www.yayakq.cn/news/777915/

相关文章:

  • 网站关键词突然搜不到dplayer wordpress
  • 安平丝网网站建设建设网站杭州
  • 营销网站与企业网站的区别网站是用什么技术做的
  • 长沙河西做网站东莞网站设计与制作公司
  • 个人做的好的淘宝客网站wordpress安装php5.4
  • 两学一做知识竞答网站视频网站视频预览怎么做的
  • 做视频网站需要哪些技术指标合肥公司建设网站首页
  • 男女直接做网站宁波网站建设多少钱一个
  • 网站建设活动方案如何让WordPress上传媒体
  • 网站动画用什么做的wordpress discuz 整合
  • 广州市住房和建设局网站福州网站建设福州站建设
  • 郑州华恩科技做网站怎么样wordpress太多重定向
  • 网站建设需求意见征求表北辰做网站的公司
  • 深圳约的网站设计手机百度网页版登录入口
  • 北京企业模板建站有哪些wordpress激活主题
  • 京东联盟如何做查优惠卷的网站火车票网站建设多少
  • 制作网站代码大全贵阳免费做网站
  • 北京通信管理局网站备案处模板网站系统
  • wordpress博客群主机重庆优化官网服务
  • 做旅游网站设计的感想优惠券怎么做自己的网站
  • 重庆最便宜的网站建设公司液压产品做哪个网站好
  • 太原网站建设晋icp备企业邮箱注册申请官网
  • 淘客cms建站系统手游门户网站模块
  • 凡科网站能在百度做推广吗网站里的聊天怎么做
  • 包头网站制作 建设北京市城乡建设网站
  • 展馆网站建设ppt模板免费下载百度云
  • 营销型网站设计注意展览网站源码
  • 建设网站相关法律条文国外教育网站模板
  • 如何设计网站中的上传功能wordpress获取分类下文章列表
  • 学什么专业可以做网站东莞+网站建设+定制水