我如何知道子进程的 stdout 数据是否已分解为缓冲块?



因此,在node.js中使用子进程时,我们正在从缓冲流中读取子进程的stdout。那么,我如何知道缓冲区块是包含完整的标准输出消息还是仅包含其中的一部分?我怎么知道一个块是否是最后一个?或者这是不可能的(我怀疑答案是肯定的,但我希望它是否定的)?

我之所以问这个问题,是因为在我的情况下,父进程和子进程通过相互发送 JSON 进行通信,我应该知道 JSON 何时实际结束,以及何时分解。我可以每次都运行 JSON.parse,看看它是否是一个有效的 JSON,但这对我来说似乎很臭。

如果将来有人发现它有用,包括我,我们可以将一些令牌(如<EOM>即消息结束)附加到 JSON 消息中,这样我们就可以知道它是整个消息的结尾,即使消息被分解为块。当接收data块时,我们只需检查块是否以<EOM>结尾。

最新更新