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

1. 获取用户名的接口通过环境变量来获取我们需要用到的接口getenv代码语言:javascript代码运行次数:0运行复制获取用户名const char* GetUserName(){const char* name = gete

【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就好了

效果展示:

发布者:admin,转转请注明出处:http://www.yc00.com/web/1748017024a4719167.html

相关推荐

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

    1. 获取用户名的接口通过环境变量来获取我们需要用到的接口getenv代码语言:javascript代码运行次数:0运行复制获取用户名const char* GetUserName(){const char* name = gete

    6小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信