在嵌入式终端中发出命令

在嵌入式终端中发出命令,第1张

在嵌入式终端中发出命令

您可以通过写入伪终端从属子进程来与外壳进行交互。这是一个如何工作的演示。这个答案多少基于对
Linux伪终端
的回答
:执行从一个终端发送到另一个终端的字符串

关键是要获得xterm使用的伪终端(通过

tty
命令),并将方法的输出和输入重定向到该伪终端文件。例如
ls < /dev/pts/1 >/dev/pts/1 2> /dev/pts/1

注意

  1. xterm子处理程序泄漏(
    os.system
    不建议使用,尤其是对于
    &
    说明不推荐使用。请参阅
    suprocess
    模块)。
  2. 可能无法以编程方式找到使用了哪个tty
  3. 每个命令都在新的suprocess中执行(仅显示输入和输出),因此状态修改命令(例如xterm)

    cd
    以及xterm的上下文(
    cd
    在xterm中)无效

    from Tkinter import *from os import system as cmd

    root = Tk()
    termf = frame(root, height=700, width=1000)
    termf.pack(fill=BOTH, expand=YES)
    wid = termf.winfo_id()

    f=frame(root)
    Label(f,text=”/dev/pts/”).pack(side=LEFT)
    tty_index = Entry(f, width=3)
    tty_index.insert(0, “1”)
    tty_index.pack(side=LEFT)
    Label(f,text=”Command:”).pack(side=LEFT)
    e = Entry(f)
    e.insert(0, “ls -l”)
    e.pack(side=LEFT,fill=X,expand=1)

    def send_entry_to_terminal(args):
    “”“
    args needed since callback may be called from no arg (button)
    or one arg (entry)
    “”“
    command=e.get()
    tty=”/dev/pts/%s” % tty_index.get()
    cmd(“%s <%s >%s 2> %s” % (command,tty,tty,tty))

    e.bind(““,send_entry_to_terminal)
    b = Button(f,text=”Send”, command=send_entry_to_terminal)
    b.pack(side=LEFT)
    f.pack(fill=X, expand=1)

    cmd(‘xterm -into %d -geometry 160x50 -sb -e “tty; sh” &’ % wid)

    root.mainloop()



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5661748.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存