Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何从命令行创建伪终端对_Bash_Pty - Fatal编程技术网

Bash 如何从命令行创建伪终端对

Bash 如何从命令行创建伪终端对,bash,pty,Bash,Pty,我有一个Linux应用程序(我可以访问其代码),它必须通过串行端口与windows one(第三方,无法访问代码)通信。windows应用程序在Wine中运行,因此我想将Wine的com1设置为某个值,并使我的软件从那里读写。我想最好的方法是使用伪终端,是吗 在Linux中,有没有一种方法可以简单地从命令行创建一个伪终端对?我已经知道如何使用API来实现这一点,但是有没有一种从bash实现的方法 可能使用socat或类似的工具?您可以使用类似的工具(未经测试): 这将创建两个背对背的PTY,这有

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

在Linux中,有没有一种方法可以简单地从命令行创建一个伪终端对?我已经知道如何使用API来实现这一点,但是有没有一种从bash实现的方法


可能使用socat或类似的工具?

您可以使用类似的工具(未经测试):


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

socat不做您想做的事吗?我想是的,但您知道怎么做吗?我真的不知道如何使用它,但在我看来,它假设某个东西已经打开(例如,一个套接字),然后可以创建一个pty链接这两者。但是我需要两个设备,一个放在酒里,另一个放在我的程序里。嗨,奥斯汀。谢谢你的回答,这使我走上了正确的方向。我还有一个疑问:数据是否会使用上述参数向两个方向流动?在wine应用程序中,我看不到任何数据,尽管我的linux程序接收来自windows应用程序的输出。事实证明,问题出在我的windows应用程序中,似乎它在葡萄酒上的效果不太好。我用两个screen实例(
screen$HOME/.wine/dosdevices/com1
screen$HOME/tmp/dev/myserial
)以及另一端的一个screen和linux程序测试了上面的命令。
socat PTY,link=$HOME/.wine/dosdevices/com1,raw,echo=0 PTY,link=$HOME/tmp/dev/myserial,raw,echo=0