假设我们有一个命名管道:
node x.js > ${my_named_pipe} &
node y.js > ${my_named_pipe} &
node z.js > ${my_named_pipe} &
说有多个作者写这个命名管道:
int x,y;
try{
x = Integer.parseInt(textField.getText().trim());
} catch(NumberFormatException ex) {
x = 0;
}
try{
y = Integer.parseInt(textField2.getText().trim());
} catch(NumberFormatException ex) {
y = 0;
}
像这样的东西 - 是否有一种可靠的方式来复用它,以便每次都可以传递一条完整的消息,或者只能从一个编写器中读取命名管道?
这让我想知道我们如何复用端口/套接字等,我不知道它是如何完成的。
答案 0 :(得分:1)
这可能是一个天真的答案,但这对我有用。
如果您有多个写入器写入一个FIFO,并且您不希望它们的输出受到干扰,则可以使用stdbuf
,但前提是输出是基于行的。整个段落仍会交错。
stdbuf -oL node x.js > ${my_named_pipe} &
stdbuf -oL node y.js > ${my_named_pipe} &
stdbuf -oL node z.js > ${my_named_pipe} &
man stdbuf
:stdbuf
-运行COMMAND,对其标准流进行修改的缓冲操作。
仅当您的原始程序不调整其对标准输出流的缓冲时,此功能才起作用。