2017-07-19 56 views
0

我想将一些输入字符串设置为stdin,以便另一个进程可以读取stdin作为输入。我用Java BufferedWriter。但是,如果输入字符串大于管道大小或其他进程不读取,我该如何处理这种情况?是否有API来检查管道是否可用于写入?Java BufferedWriter.write

+0

为什么,你得到一个错误? –

+0

该进程应该从stdin中主动读取,这将清除缓冲区中的空间。正如马丁所说,你在这里遇到了一个问题吗? – dimo414

+0

不是,但只是为了积极主动,因为我得到了一个代码审查反馈,说如果没有人阅读它,写入将被阻止 – JennyS

回答

1

但我怎么处理的情况下,当输入字符串比管道尺寸

你不必做大。它会阻塞,直到空间可用。

或其他进程不读取?

再次,您将阻止,直到空间可用。如果其他进程没有读取,那是另一个进程中的一个错误。

是否有API来检查管道是否可用于写入?

不。这是Java阻塞的I/O。它阻止。 Java不提供任何其他方式来写入进程的输入,或查看阻塞写入是否会阻塞。

我有一个代码审查反馈说写会如果没有一个是从它

读取被阻塞,这是正确的,但他们怎么指望你做什么呢?它阻止了I/O,这就是它的工作原理。问问他们他们期望你怎么做。

NB stdin是输入的名称,而不是输出的名称。不要将输入的名称用于输出流。它被输入到另一个进程,但输出给你的。我不会称之为stdout,它不是你的stdout。如果需要更多的特殊性,我只会将其称为outprocessOut