BASH:从两个输入流中读取的最佳架构

Dav*_*rks 5 linux io bash multithreading subprocess

这里简单的脚本:

a)不断从套接字读取并在关联数组中存储值
b)不断从stdin读取值并在关联数组中已存在时响应t/f

a&b是随机事件,不以任何方式关联.

诀窍是从两个子进程访问数组(因为在后台放置一个进程会将其作为子进程生成)

我正在考虑最好的策略,并且会出现一些想法,但我想知道是否有人有更好的想法:

1)将输入从套接字重定向到stdin作为子进程并在一个while循环中处理两个输入(数据大小很小,<30个字符,所以我猜它们将保持原子?).
2)读取套接字,然后在读取时使用小(0.1?)超时值读取STDIN,以模仿非阻塞I/O.
3) UPDATE:将套接字数据写入文件(实际上让其他进程将其直接写入文件),然后每次请求进入以检查该值是否存在时,处理文件中的条目,将它们添加到文件中.数组(使用文件锁定).

Ada*_*eld 4

Bash 不是合适的工具。这个问题通常可以使用select(2)poll(2)系统调用来解决,它允许您同时等待多个文件描述符而无需旋转。Bash 没有与其中任何一个的接口。

我建议使用脚本语言,例如 Python 或 Perl(无论您喜欢什么,实际上),它们提供了select或 的接口poll(例如 Python 的select模块)。