仅在打开时才有条件地写入可写流?

时间:2018-09-21 02:45:08

标签: node.js

我的模块中有此功能,该功能可写入child process's stdin流。但是有时候我会面对

events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: write EPIPE
    at exports._errnoException (util.js:1020:11)
    at WriteWrap.afterWrite (net.js:800:14)

我认为它的发生是因为有时可写的stdin流在我写入之前已关闭。基本上我想检查它是否关闭。如果打开,我会写进去,否则我不会写进去。

相关代码

/**
 * Write the stdin into the child process
 * @param proc Child process refrence
 * @param stdin stdin string
 */
export function writeToStdin(proc: ChildProcess, stdin: string) {
    if (stdin) {
        proc.stdin.write(stdin + '\r\n');
        proc.stdin.end();
    }
}

是否找不到我要检查的API?

1 个答案:

答案 0 :(得分:0)

您可以从流中尝试finished api

const { finished } = require('stream');

const rs = fs.createReadStream('archive.tar');

finished(rs, (err) => {
  if (err) {
    console.error('Stream failed', err);
  } else {
    console.log('Stream is done reading');
  }
});

rs.resume(); // drain the stream