【发布时间】:2014-01-15 11:37:30
【问题描述】:
我尝试使用 fs.read 从文件描述符中读取。回调函数被调用 拿到数据后。它工作正常。
但现在我想实现一个超时机制:如果 fs.read 在超时内没有获取数据,它应该停止读取。
如何让 fs.read 停止阅读?它仍然挂在后台试图阅读。
我大致做了以下事情:
...
var fd = fs.openSync("/dev/ttyUSB0", 'rs+');
...
...
var bout = new Buffer(string,'binary');
fs.write(fd, bout, 0, bout.length,undefined,function(err, written, buffer) {
console.log("error writing: "+err);
var bin = new Buffer(1);
fs.read(fd,bin,0,1,undefined,function(err,read,buffer) {
console.log("got it: "+bin);
});
});
...
...
我想写一些东西到 /dev/ttyUSB0 并阅读答案,但有时没有答案。如果发生这种情况,读取应该超时,以便我可以开始另一个写入/读取。
谢谢
我尝试使用 Timeout 并关闭它,但它不起作用,这是一个示例: 您必须为测试制作“mkfifo 文件”。
var fs=require('fs');
console.log("open file");
fs.open('file', 'r+', function(err,fd) {
console.log("start reading on "+fd);
var length=5;
var data = new Buffer(length);
data.fill("-");
setTimeout(function(){
console.log("timeout");
console.log("close fd "+fd);
fs.close(fd,function(err) {
console.log("close done: "+err);
});
}, 5000);
fs.read(fd, data, 0, length,undefined, function(error, got) {
console.log("error: "+error);
console.log("got callback: "+data);
});
console.log("done");
});
fs.close 不起作用。关闭后,您可以创建一个“echo test > file”,然后读取获取数据。读取已关闭的文件句柄?
有什么想法吗?
【问题讨论】:
-
添加您的代码。然后我们可以帮助您
标签: javascript node.js timeout