简单的脚本在这里:
a) 不断从套接字读取并将值存储在关联数组中
b) 不断从stdin读取值并响应t / f(如果它们已存在于关联数组中)
a和b是随机事件,不以任何方式关联。
诀窍是从两个子流程访问数组(因为将流程放在后台会将其作为子流程生成)
我正在考虑最好的策略,并且出现了一些想法,但是我想知道是否有人有更好的想法:
1)
将输入从套接字重定向到stdin作为子进程,并在一个while循环中处理这两个输入(数据大小较小,小于30个字符,所以我想它们将保持原子状态?)。
2) 读取套接字,然后读取STDIN,读取时具有小的(0.1?)超时值,以模拟非阻塞I / O。
3)
更新:将套接字数据写入文件(实际上是让另一个进程将其直接写入文件),然后每次请求进入以检查该值是否存在时,处理文件中的条目,并将它们添加到文件中数组(使用文件锁定)。
Bash不是正确的工具。通常使用select(2)
或poll(2)
系统调用解决此问题,这使您可以同时等待多个文件描述符而无需旋转。Bash没有任何一个接口。
我建议您使用一种脚本语言,例如Python或Perl(无论您是否满意),它都可以提供select
或的接口poll
(例如Python的select
模块)。
我正在创建一个java客户端程序,它向服务器发送一个命令,服务器会发回一个确认和一个响应字符串。 响应以这种方式发回 客户- 服务器- 服务器- 当我尝试读取输入时,我只能读取一个输入流的确认消息 我的客户端程序能够以某种方式读取消息(hacky方法)。要读取输入,我必须使用Bufferedreader读取ack msg。 此缓冲读取器只能读取ack_msg不能读取以下msg 需要DataInpu
问题内容: 我正在使用从运行约一分钟的进程中读取stdout。 我该如何stdout以流方式打印出该流程的每一行,以便可以看到生成的输出,但仍然阻止该流程终止,然后再继续? 似乎一次给出所有输出。 问题答案: 这是一个简单的示例(不检查错误): 如果ls结束太快,则while循环可能会在你读取所有数据之前结束。 你可以通过以下方式在中捕获其余部分:
我目前正试图从服务器读取图像文件,但得到的数据不完整或 这与缓冲区大小有关吗?我已经尝试使用静态大小而不是ContentLength。敬请指教。
问题内容: 我正在Ubuntu 11.4上的一个终端上运行它。 假设我执行一个bash脚本,输出为: 在同一个bash脚本中,如何将上述输出存储为一个或多个变量? 理想的解决方案是准备好在以下条件中使用:(输出的第一行将存储在等中) 问题答案: 所以你要 请参见Bash手册中的“此处字符串” 。 或流程替代
问题内容: 我对如何避免套接字在读取时挂起有些困惑。这是我的代码: 上面的代码成功地从流中读取了所有数据,但随后挂起。在网上阅读时,我期望从服务器接收到-1(我无法控制),以表明我已经到达流的末尾,但是我得到了: 然后挂起。因此,我的问题是: 1)我是否将此编码错误或服务器的响应有问题? 2)如果服务器的响应有问题(即未返回-1),我该如何解决(即在挂起时停止读取)。 任何帮助表示赞赏! 问题答案
问题内容: 我想在我的Java程序中读取c-Application的输出流。 iremoted (可在此处获得:http : _//osxbook.com/software/iremoted/download/iremoted.c_ )是一个C应用程序,如果按下了Apple Remote遥控器上的按钮,它将显示诸如“ 0x19按下”的单独行。如果我启动改头换面的程序,那么一切都会很好,每当我按下一