【发布时间】:2017-12-12 10:39:13
【问题描述】:
我有这个:
const p = path.resolve(projectRoot + '/NAMEDPIPEIN');
const fd = fs.openSync(p, 'r+');
fs.createReadStream(null, {fd}).on('data', function (d) {
if (String(d).trim() === '[stdin end]') {
return process.nextTick(cb);
}
process.argv.push(String(d).trim());
});
我启动 Node.js 进程,然后写入命名管道。由于某种原因,on data 回调中似乎没有数据到达。
我正在写这样的命名管道:
mkfifo NAMEDPIPEIN
echo "foo bar baz" > NAMEDPIPEIN
【问题讨论】:
-
你试过this suggestion for Linux吗?
-
谢谢,现在试试...想知道它是否可以在 mac 上运行
-
根据该线程,它(很可能)在 Linux 以外的任何地方都无法工作。
-
您的代码在我的 Mac 上运行良好(因为每当我将一些数据写入命名管道时,
data事件就会触发)。顺便说一句,child_process.spawn()不是您想要做的任何事情的解决方案吗? -
就我而言,我有一个守护进程。我需要向守护进程发送一些命令。据我所知,在 macos 和 linux 上执行 IPC 的最简单方法是命名管道。不过,这并不容易。
标签: node.js linux bash macos named-pipes