我有一个可以通过UNIX套接字进行通信的进程(实际上是abstract socket,我认为这是特定于Linux的。)
我正在编写一个需要向此进程发送命令的shell脚本。我决定尝试使用SOCAT来达到这个目的。我试图弄清楚如何(1)连接到抽象套接字,(2)发送一个命令(一个字符串),(3)读取响应并将响应打印到stdout。
到目前为止,我可以通过简单地说:
轻松连接socat ABSTRACT-CONNECT:mysocket STDIN
这将STDIN连接到套接字,因此如果我知道手动键入命令,套接字将读入字符串,然后将结果响应输出到控制台。
除非我在脚本中运行socat,否则我需要自动将字符串发送到STDIN。好的,所以最简单的方法就是将字符串传递给STDIN。所以假设我们有一个名为" status
"的命令,我会说:
echo status | socat ABSTRACT-CONNECT:mysocket STDIN
这似乎有效(socat报告没有错误),除了结果没有发送到stdout。相反,调用只返回没有响应。那么我怎样才能从套接字中读取一行并在stdout上显示结果?
答案 0 :(得分:4)
使用" STDIO"第二个参数的地址类型,这是一个双向地址。它从控制台读取输入数据并发送到另一端,并从对端接收数据并写入控制台输出。很高兴提到-
又名。 破折号是stdio的快捷方式。