简单的脚本在这里:
a) 不断从套接字读取并将值存储在关联数组中 b) 不断从stdin读取值并响应t / f(如果它们已存在于关联数组中)
a和b是随机事件,不以任何方式关联。
诀窍是从两个子流程访问数组(因为将流程放在后台会将其作为子流程生成)
我正在考虑最好的策略,并且出现了一些想法,但是我想知道是否有人有更好的想法:
1) 将输入从套接字重定向到stdin作为子进程,并在一个while循环中处理这两个输入(数据大小较小,小于30个字符,所以我想它们将保持原子状态?)。 2) 读取套接字,然后读取STDIN,读取时具有小的(0.1?)超时值,以模拟非阻塞I / O。 3) 更新:将套接字数据写入文件(实际上是让另一个进程将其直接写入文件),然后每次请求进入以检查该值是否存在时,处理文件中的条目,并将它们添加到文件中数组(使用文件锁定)。
Bash不是正确的工具。通常使用select(2)或poll(2)系统调用解决此问题,这使您可以同时等待多个文件描述符而无需旋转。Bash没有任何一个接口。
select(2)
poll(2)
我建议您使用一种脚本语言,例如Python或Perl(无论您是否满意),它都可以提供select或的接口poll(例如Python的select模块)。
select
poll