Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在NoDE.js中从C++命名管道读取数据时丢失数据 < >我把一个简单的C++应用程序编成了一个简单的C++应用程序,它将HID密钥代码从/DEV/INPUT/EXCEL[X]转储到Linux上的命名管道上。它可以很好地登录到控制台,但当我从node.js应用程序读取命名管道时,它会随机错过数据事件 相关C++代码: int fd; char * myfifo = "/tmp/testfifo"; mkfifo(myfifo, 0660); fd = open(myfifo, O_WRONLY); while (1){ value = ev[0].value; if (value != ' ' && ev[1].value == 1 && ev[1].type == 1) { string s = to_string(ev[1].code); char const *sop = (s + "\n").c_str(); cout << sop; write(fd, sop, sizeof(sop)); } } 我猜我读命名管道的方法有缺陷,因为C++输出看起来不错,但是我对C++几乎一无所知,所以我不确定我是否在C++上正确地冲洗管道,或者我需要在No.js侧调整一些读油门。有什么想法吗?有几个错误: 语句char const*sop=s+\n.c\u str;生成悬空引用,因为s+\n生成的临时字符串在语句求值后被销毁。 书面文件、sop、sizeofsop;写入sizeofchar const*字节,而它应该写入strensop字节。_C++_Node.js_Linux_Named Pipes - Fatal编程技术网

在NoDE.js中从C++命名管道读取数据时丢失数据 < >我把一个简单的C++应用程序编成了一个简单的C++应用程序,它将HID密钥代码从/DEV/INPUT/EXCEL[X]转储到Linux上的命名管道上。它可以很好地登录到控制台,但当我从node.js应用程序读取命名管道时,它会随机错过数据事件 相关C++代码: int fd; char * myfifo = "/tmp/testfifo"; mkfifo(myfifo, 0660); fd = open(myfifo, O_WRONLY); while (1){ value = ev[0].value; if (value != ' ' && ev[1].value == 1 && ev[1].type == 1) { string s = to_string(ev[1].code); char const *sop = (s + "\n").c_str(); cout << sop; write(fd, sop, sizeof(sop)); } } 我猜我读命名管道的方法有缺陷,因为C++输出看起来不错,但是我对C++几乎一无所知,所以我不确定我是否在C++上正确地冲洗管道,或者我需要在No.js侧调整一些读油门。有什么想法吗?有几个错误: 语句char const*sop=s+\n.c\u str;生成悬空引用,因为s+\n生成的临时字符串在语句求值后被销毁。 书面文件、sop、sizeofsop;写入sizeofchar const*字节,而它应该写入strensop字节。

在NoDE.js中从C++命名管道读取数据时丢失数据 < >我把一个简单的C++应用程序编成了一个简单的C++应用程序,它将HID密钥代码从/DEV/INPUT/EXCEL[X]转储到Linux上的命名管道上。它可以很好地登录到控制台,但当我从node.js应用程序读取命名管道时,它会随机错过数据事件 相关C++代码: int fd; char * myfifo = "/tmp/testfifo"; mkfifo(myfifo, 0660); fd = open(myfifo, O_WRONLY); while (1){ value = ev[0].value; if (value != ' ' && ev[1].value == 1 && ev[1].type == 1) { string s = to_string(ev[1].code); char const *sop = (s + "\n").c_str(); cout << sop; write(fd, sop, sizeof(sop)); } } 我猜我读命名管道的方法有缺陷,因为C++输出看起来不错,但是我对C++几乎一无所知,所以我不确定我是否在C++上正确地冲洗管道,或者我需要在No.js侧调整一些读油门。有什么想法吗?有几个错误: 语句char const*sop=s+\n.c\u str;生成悬空引用,因为s+\n生成的临时字符串在语句求值后被销毁。 书面文件、sop、sizeofsop;写入sizeofchar const*字节,而它应该写入strensop字节。,c++,node.js,linux,named-pipes,C++,Node.js,Linux,Named Pipes,解决方案: std::string sop = s + "\n"; write(fd, sop.data(), sop.size()); 谢谢你的回复。不幸的是,这种改变没有任何效果。请检查C++代码中的FD值。我认为它肯定在node.js端,因为当我使用spawn跟踪同一个管道时,效果非常好。非常有趣。这个javascript对我来说很有用,即使使用更简单的fs.createReadStream'/tmp/testfifo'。。。。 std::string sop = s + "\n"; w

解决方案:

std::string sop = s + "\n";
write(fd, sop.data(), sop.size());

谢谢你的回复。不幸的是,这种改变没有任何效果。请检查C++代码中的FD值。我认为它肯定在node.js端,因为当我使用spawn跟踪同一个管道时,效果非常好。非常有趣。这个javascript对我来说很有用,即使使用更简单的fs.createReadStream'/tmp/testfifo'。。。。
std::string sop = s + "\n";
write(fd, sop.data(), sop.size());