node-red - NodeRed 中的 execNode 不执行 while 1 语句
问题描述
我正在运行一个 exec 节点来运行 C 代码以通过 Lora 发送和接收数据。
代码在没有 while 1 循环的情况下完美运行。
如果我放置一个 while true 循环,它将继续运行但不会工作。while 1 用于每秒读取数据。
我尝试使用 daemon exec 节点也 bigExec 但没有奏效。
解决方案
如果进程永远不会退出(这就是我假设你的意思是有一个 while 1 循环),那么守护程序节点就是正确的答案。
只要您的应用程序将其输出打印到 stdout 或 stderr 并在每个输出的末尾包含一个新行,它就会为每一行输出发送一条新消息。您可能需要确保正确刷新标准输出,您可以通过fflush(stdout);
在 printfs 之后添加来做到这一点,例如
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv) {
int i = 0;
int max = 0;
if (argc == 2) {
max = atoi(argv[1]);
}
while (1) {
if (max) {
if (++i > max) {
exit(0);
}
}
printf("helloWorld\n");
fflush(stdout);
sleep(2);
}
}
exec 节点将等到进程退出后再发送消息,因此这不是您需要的。
推荐阅读
- c - 为什么我的 for 循环不在第二个循环中打印?
- java - 全屏活动android 3.3
- typescript - tsconfig 中声明的路径在没有 index.ts 导入的情况下无法正确解析
- c# - 当条件之一为假时,if 语句是否立即返回
- lua - 如何改变 Love2D 中每一帧的速度?
- php - REST API - 通过单击提交自动发出请求
- python - BeautifulSoup 发现 div 正在返回整个页面而不是单个元素
- symfony - Symfony 4 自定义事件调度程序不工作
- c++ - 将 C++ 与 Tizen 库一起使用
- reactjs - 对鼠标滚动做出反应状态变化