linux下控制台程序界面的自动补齐和历史记录功能cli

本文介绍了如何在Linux环境下为控制台程序添加自动补齐和历史记录功能,利用libedit库简化实现过程。通过示例代码展示了如何配置EditLine库,设置提示符、自动补齐回调函数,并绑定键盘快捷键。
摘要由CSDN通过智能技术生成

 

一 目的

为了使linux下的程序在运行中的命令行界面输入命令时具有自动补齐和历史记录功能,比如像asterisk的控制台界面。

二 实现方法

实现方法相对于在远端实现(参见:为在telnet自己TCP服务器程序的界面上实现shell一样的自动补齐和历史记录的功能)要简单的多,因为有第三方库可以使用—libedit库,这个库可以处理很多与控制台界面有关的东西。Asterisk用的就是这个,最开始以为asterisk的这种方式可以远程使用,后来看了下源码发现只能在本地使用,因为它绑定的键位是本机键盘,在远端(一般是telnet)的”↑””↓”上翻下翻键无法是被检测到的。

三 详细实现

Cli.c

static History *el_hist;  //命令历史记录列表

static EditLine *el;     //本地编辑功能的主要实体

 

//用于显示提示符的回调函数

static char *cli_prompt(EditLine * el)

{

    static char prompt[200];

    sprintf(prompt, "CLI>");

    return prompt;

}

 

//用于自动补齐的回调函数

static char *cli_complete(EditLine * el, int ch)

{

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值