代码之家  ›  专栏  ›  技术社区  ›  Natesh bhat

为什么我不能从另一个终端写入终端设备的标准输入

  •  1
  • Natesh bhat  · 技术社区  · 7 年前

    我在我的Gnome桌面管理器Ubuntu中打开了两个pts终端。

    我要做的是使用terminal/dev/pts/1使用重定向将某些内容写入terminal/dev/pts/0,如:

    ##in pts/1
    echo date > /dev/pts/0   
    

    echo date 到/dev/pts/0,它给了我权限被拒绝的错误,我成为了根用户并更改了它的权限,但仍然无法获取 date 命令在pts/0中运行。

    我尝试这些东西是为了学习。所以我真的很困惑这一切是如何运作的,我应该做些什么来完成它。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Community Mohan Dere    5 年前

    您可以通过执行以下命令(从/dev/pts/1或其他tty):

    执行1>/dev/pts/0

    exec 1>/dev/pts/1#或您的实际原始tty地址。

    基本上你正在取代tty标准。

    编辑以获取更多详细信息。

    在这种情况下,“exec”将启动一个新的bash,您可以向它提供一组新的环境变量,这些变量通常不能动态更改。更多详情请点击“ManExec”。

    “1>/dev/pts/0”这里我们说,“无论我在这个新bash上键入什么,都要将它写入另一个bash,它确实会这样做,但所有的stdout都将显示在原来的tty中。

    祝你学习linux好运,希望你喜欢。

        2
  •  7
  •   Barmar    7 年前

    写入终端设备只是在终端上打印输出。如果它将文本填充回输入缓冲区,那么您打印到的所有内容 stdout stdin

    /dev/ptmx 主进程使用 grantpt()