V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
xiaoxiaoyang
V2EX  ›  Linux

各位大神,在 CentOS 中我想实现自己的 shell 界面,而且这个 shell 是针对我的开发板的,开发板和我的笔记本只有一根串口线和网线相连,请不吝赐教,菜鸟 xiaoxiaoyang 感谢

  •  
  •   xiaoxiaoyang · 2015-07-20 16:58:32 +08:00 · 3000 次点击
    这是一个创建于 3416 天前的主题,其中的信息可能已经有所发展或是发生改变。
    14 条回复    2015-07-23 09:15:02 +08:00
    xiaoxiaoyang
        1
    xiaoxiaoyang  
    OP
       2015-07-20 17:01:03 +08:00
    追加一句,想程序启动后直接切换到自己的shell界面,请各位同行指点
    nobodybutme
        2
    nobodybutme  
       2015-07-20 17:58:46 +08:00
    不明白你这么做的目的。 你从centos开个终端直接ssh/serial 或者任意方式登陆上开发板不就得到了一个开发板的shell了么
    iamfredng
        3
    iamfredng  
       2015-07-20 19:50:32 +08:00
    自己开发个bash
    xiaoxiaoyang
        4
    xiaoxiaoyang  
    OP
       2015-07-20 22:37:43 +08:00
    可能我说的不太明白,就是从我的应用程序直接从终端上运行到我自己的定义的shell里,然后再我我的shell里写我自己定义的命令,
    402124773
        5
    402124773  
       2015-07-21 09:52:22 +08:00
    你的问题,实在写的不清楚,看不懂。开发板如何连接电脑,参见2楼。
    fxxkgw
        6
    fxxkgw  
       2015-07-21 10:17:11 +08:00
    windows下用一些工具 比如putty absoluteTelnet这种 如果开发板配置了IP 就用Telnet或者SSH 如果用的是RS232这种串口线就用Telnet centos也一样 只是工具换成了命令
    如果开发板已经有bootloader了 那启动后就连上电脑 把开发板工作目录mount到centos中 直接./demo运行
    如果没boot 就要用工具烧了 可能会麻烦些 至少要知道不同分区之类
    xiaoxiaoyang
        7
    xiaoxiaoyang  
    OP
       2015-07-21 12:23:43 +08:00
    iIntLockKey = vos_intLock();

    iShell= taskNameToId("tShell");
    if(iShell != ERROR)
    {
    taskDelete(iShell);
    }

    shellOrigStdSet(STD_IN, a);//a文件描述符
    shellOrigStdSet(STD_OUT, a);
    shellOrigStdSet(STD_ERR, a);

    ioGlobalStdSet(STD_IN, a);
    ioGlobalStdSet(STD_OUT, a);
    ioGlobalStdSet(STD_ERR, a);

    vxworks上这样写的,但是想在linux也想实现一种,能在自己写程序的系统中调用某个函数进入到有自己命令提示符的自己定义的类似shell命令
    nalaginrut
        8
    nalaginrut  
       2015-07-21 12:48:00 +08:00
    @xiaoxiaoyang 你是想在上位机(PC)实现一个shell专门通过串口给板子下命令?板子上跑什么OS?
    xiaoxiaoyang
        9
    xiaoxiaoyang  
    OP
       2015-07-21 14:37:24 +08:00
    真的真的非常感谢@nobodybutme
    @402124773
    @iamfredng
    @fxxkgw
    很感谢@nalaginrut
    回答:
    是的是的,我的开发板系统是CentOs6.4的linux操作系统,想在开发板里跑着自己的程序,而这个程序中又有我自己定义的shell命令行系统,想程序运行到某个地方就可以切换到我自己的shell命令行系统中,并且我自己也可以键入我在自己程序中写好的命令,让我的程序执行我自己的命令;就是不知道如何让程序自动切换到我自己定义的shell系统呢?
    hitmanx
        10
    hitmanx  
       2015-07-21 15:57:01 +08:00
    试试搜索关键字"默认shell 修改"?
    nalaginrut
        11
    nalaginrut  
       2015-07-21 17:40:17 +08:00
    @xiaoxiaoyang 你的问题还是描述得不是很清楚。如果想在程序里嵌入一个shell,其实就是实现一个REPL(read-eval-print-loop)然后在程序里调用就行了。在这种情况下你并不需要修改系统shell。
    xiaoxiaoyang
        12
    xiaoxiaoyang  
    OP
       2015-07-22 08:56:38 +08:00
    感谢@hitmanx
    @nalaginrut的回复,REPL(read-eval-print-loop)这个在linux下用c实现会很复杂吗?
    nalaginrut
        13
    nalaginrut  
       2015-07-22 21:58:33 +08:00
    @xiaoxiaoyang 你写过一次就会很简单,如果你在应用层做,我建议挑个动态语言来写,在应用层用C也很简单,内核层的话不建议带loop,做着玩倒是可以。REPL是解释器最基本的构架,最简单的情况下一行代码就能完成,你想实现shell的话相当于实现一个解释器,所以REPL是必备的。

    https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop
    xiaoxiaoyang
        14
    xiaoxiaoyang  
    OP
       2015-07-23 09:15:02 +08:00
    非常感谢@nalaginrut,我研究下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1380 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:35 · PVG 01:35 · LAX 09:35 · JFK 12:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.