【问题标题】:How to create pseudo terminal pairs from command line如何从命令行创建伪终端对
【发布时间】:2013-11-07 22:29:52
【问题描述】:

我有一个 Linux 应用程序(我可以访问其代码),它必须通过串行端口与 windows one 通信(第三方,无法访问代码)。 Windows 应用程序在 Wine 中运行,所以我想将 Wine 的 com1 设置为某个东西,并让我的软件从那里读写。我想最好的方法是使用伪终端,是这样吗?

有没有办法在 Linux 中从命令行简单地创建一个伪终端对?我已经知道如何使用 API 做到这一点,但是有没有办法从 bash 做到这一点?

也许用 socat 或类似的东西?

【问题讨论】:

  • socat 不做你想做的事吗?
  • 我猜是这样,但你知道怎么做吗?我真的不知道如何使用它,但在我看来,它假设某些东西已经打开(例如套接字),然后可以创建一个链接两者的 pty。但我需要两台设备,一台在 Wine 中设置,另一台在我的程序中。

标签: bash pty


【解决方案1】:

你也许可以使用这样的东西(未经测试):

socat PTY,link=$HOME/.wine/dosdevices/com1,raw,echo=0 PTY,link=$HOME/tmp/dev/myserial,raw,echo=0

这将创建两个背靠背的 PTY,这有点矫枉过正,但 socat 会在它们之间复制数据。 wine 程序将打开链接的一侧作为 COM1,您的程序将打开 $HOME/tmp/dev/myserial 以与 COM1 通信。

【讨论】:

  • 嗨,奥斯汀。谢谢你的回答,它让我朝着正确的方向前进。我还有一个疑问:使用上述参数,数据会双向流动吗?在 wine 应用程序中,我看不到任何数据,尽管我的 linux 程序接收来自 windows 应用程序的输出。
  • 嗯,上述解决方案完美运行。事实证明,问题出在我的 Windows 应用程序中,似乎它在 wine 上运行得不是很好。我用两个屏幕实例(screen $HOME/.wine/dosdevices/com1screen $HOME/tmp/dev/myserial)以及另一端的屏幕和 linux 程序测试了上面的命令。
猜你喜欢
  • 2019-01-20
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
相关资源
最近更新 更多