NodeRed 中的 execNode 不执行 while 1 语句

execNode in NodeRed doesn't execute a while 1 statement

我正在 运行将执行节点连接到 运行 C 代码以通过 Lora 发送和接收数据。

代码 运行 完全没有 while 1 循环。

如果我放置 while true 循环,它会保持 运行ning 但不会工作。 while 1用于每秒读取数据。

我尝试使用 daemon exec node 也使用 bigExec,但 none 有效。

如果进程永远不会退出(我假设您的意思是有一个 while 1 循环),那么守护进程节点是正确的答案。

只要您的应用程序将其输出打印到 stdout 或 stderr 并在每个输出的末尾包含一个新行,它就会为每行输出发送一条新消息。您可能需要确保正确刷新标准输出,您可以通过在 printfs 之后添加 fflush(stdout); 来做到这一点,例如

#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 节点会等到进程退出后再发送消息,所以这不是您所需要的。