我正在尝试创建一个文件,我可以cat
或echo
字符串并接收字符串作为输出。如果我理解正确,我可以使用Unix套接字。
我试过写一台服务器,但我似乎无法识别我的输入:
'use strict';
var net = require('net'),
fs = require('fs'),
socketAddress = '/tmp/test-socket',
server;
server = net.createServer(function (client) {
var whole = '';
client.on('data', function (data) {
whole += data;
});
client.on('end', function () {
client.write(whole);
});
});
fs.unlink(socketAddress, function (error) {
if (error && error.code !== 'ENOENT') {
throw error;
}
server.listen(socketAddress, function () {
console.log('Socket listening at ' + socketAddress);
});
});
我尝试echo 'Hello World!' | /tmp/test-socket
并获得bash: /tmp/test-socket: No such device or address
。但是ls -l /tmp
会产生:
srwxr-xr-x 1 jackson jackson 0 Jun 1 01:10 test-socket
请告知我如何让这个套接字回应我写给它的字符串。
答案 0 :(得分:1)
test-socket
不是一个程序。管道运算符(|
)尝试将下一个参数(在本例中为test-socket
)作为程序或脚本执行,并将输出传递给它的标准输入。
由于套接字(命名管道)本质上是文件,因此您需要使用>
或>>
运算符:
echo 'Hello World!' > /tmp/test-socke
这当然假设您的节点代码正在运行。