各位大神,在 CentOS 中我想实现自己的 shell 界面,而且这个 shell 是针对我的开发板的,开发板和我的笔记本只有一根串口线和网线相连,请不吝赐教,菜鸟 xiaoxiaoyang 感谢 - V2EX
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 3361 次点击
    这是一个创建于 3746 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    xiaoxiaoyan  
    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     Solana     991 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 19:11 PVG 03:11 LAX 12:11 JFK 15:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86