小编whi*_*nge的帖子

socat 将标准输入复制到每个连接的客户端

ncat(来自 nmap 社区)有一个简洁的默认操作,可以将任何输入复制到所有连接的客户端。例如:

在终端 1 上启动服务器:

% mkfifo messages
% exec 8<>messages  # hold the fifo open
% ncat -l 5555 -k --send-only < messages
Run Code Online (Sandbox Code Playgroud)

启动客户端侦听终端 2 和 3:

% nc localhost 5555
Run Code Online (Sandbox Code Playgroud)

向终端 4 上的 fifo 输出一些内容,并观察所有连接的客户端(终端 2 和 3)上出现的相同消息:

% printf 'Hello, clients.\n' > messages
Run Code Online (Sandbox Code Playgroud)

socat 是否可以使用相同的模式?

更新:菲利普的解决方案截图:

在此处输入图片说明

tcp socat

6
推荐指数
1
解决办法
3818
查看次数

在使用标准输入时是否可以保存当前的“stty -g”设置?

我想保存然后恢复stty脚本中的当前设置,该脚本也很消耗stdin,但stty -g正在抱怨它:

stty:“标准输入”:设备的 ioctl 不合适

我尝试关闭stdin文件描述符并stty在具有覆盖 FD 的子 shell 中调用。我不知道如何分离stdinstty -g希望得到帮助或建议。

请注意,我对 POSIX 兼容性特别感兴趣。请不要使用 Bash/Zsh 主义。

重现问题的最小脚本:

#!/usr/bin/env sh

# Save this so we can restore it later:
saved_tty_settings=$(stty -g)
printf 'stty settings: "%s"\n' "$saved_tty_settings"

# ...Script contents here that do something with stdin.

# Restore settings later
# (not working because the variable above is empty):
stty "$saved_tty_settings"
Run Code Online (Sandbox Code Playgroud)

运行print 'foo\nbar\n' | ./sttytest查看错误。

posix stdin stty

5
推荐指数
1
解决办法
2085
查看次数

标签 统计

posix ×1

socat ×1

stdin ×1

stty ×1

tcp ×1