最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

【Linux篇】自主Shell命令行解释器

网站源码admin3浏览0评论

【Linux篇】自主Shell命令行解释器

1. 获取用户名的接口

通过环境变量来获取 我们需要用到的接口getenv

代码语言:javascript代码运行次数:0运行复制
//获取用户名
const char* GetUserName()
{
	const char* name = getenv("USER");
	return name == NULL ? "None" : name;
}

 //获取主机名
const char* GetHostName()
{
	const char* hostname = getenv("HOSTNAME");
	return hostname == NULL ? "None" : hostname;
}

 //获取当前路径
const char* GetPwd()
{
	const char* pwd = getenv("PWD");
	return pwd == NULL ? "None" : pwd;
}

2. 等待用户输入接口

当我们没有输入时,我们会发现命令行会卡在这里等待我们输入

我们也让我们自己的命令行能等待输入

我们可以采用fgets以文件形式读取一行,也可以使用gets读取一行字符串 我们接下来进行C/C++混编的方式,因为我们后面会用到系统调用,而这些系统调用都是用C写的,如果我们纯用C++来实现的话可能会要适配某些接口。 我们下来用fgets实现

效果展示:

我们会发现最后多了一个空行,这里为什么会多一个空行呢?因为我们在输入完字符串后还按了一次回车,我们不想让它有这一行空行该怎么办?我们在输入字符串后后面还会有个\n,比如我们输入的是"ls -a -l"最后再按一次回车就变成了"ls -a -l \n",我们只需要输入完之后把最后的\n置为0就好了

效果展示:

发布评论

评论列表(0)

  1. 暂无评论