gpt4 book ai didi

如果将输出重定向到文件,Linux 进程行为不当 (MQTT)

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:49 26 4
gpt4 key购买 nike

我开发了通过 TCP 使用 MQTT 通信的 Linux 模块。在我编写了一个脚本来自动启动模块并将标准输出和标准错误重定向到一个文件之前,该功能没有任何问题。

重定向后,所有其他通信都正常工作,但 MQTT 通信出现问题。如果我每 1 秒发送一条消息,它们会在 30 多秒后突然成群结队地到达。

这种奇怪的行为只有在我使用输出重定向到文件时才会发生。

我的启动脚本

/bin/su -c "/usr/local/bin/TestApp 2>&1 | awk '{ print strftime(\"%F %T TestApp:\"), \$0; fflush(); }' | tee -a /home/TestApp.txt &" - root

然后我尝试了这个(但同样的问题)

/bin/su -c "/usr/local/bin/TestApp 2>&1 | tee -a /home/TestApp.txt &" - root

所以我尝试了这个(又是同样的问题)

/usr/local/bin/TestApp 2>&1 | tee -a /home/TestApp.txt &

这也行不通

/usr/local/bin/TestApp 2>&1 > /home/TestApp.txt &

唯一没有任何问题的是

/usr/local/bin/TestApp 2>&1

MQTT 通信因输出重定向而出现异常的原因是什么?

请帮忙。

编辑:添加 MQTT 代码:

MQTT 初始化函数:

int mqttInit(void) {
MQTTAsync_connectOptions conn_opts = MQTTAsync_connectOptions_initializer;
int rc;

MQTTAsync_create(&client, ADDRESS, CLIENTID, MQTTCLIENT_PERSISTENCE_NONE,NULL);

MQTTAsync_setCallbacks(client, NULL, connlost, msgarrvd, NULL);

conn_opts.keepAliveInterval = 300;//20;
conn_opts.cleansession = true;
conn_opts.onSuccess = onConnect;
conn_opts.onFailure = onConnectFailure;
conn_opts.context = client;
conn_opts.automaticReconnect = true;

if ((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS) {
printf("Failed to start connect, return code %d\n", rc);
rc= EXIT_FAILURE;
}

return rc;
}

收到数据时触发的函数:

int msgarrvd(void *context, char *topicName, int topicLen,MQTTAsync_message *message) {
int i;
char* payloadptr;
char temp[20];
int rc;

printf("===================\n MQTT msgarrvd: \n topic: %s \n paylength=%d \n payload=", topicName, message->payloadlen);

for (i = 0; i < message->payloadlen; i++) {
msgarrvd_Buff[i] = *payloadptr++;
printf("%02X", msgarrvd_Buff[i]);
}

printf("\n===================\n");
printf("Message arrived \r\n");

最佳答案

好的,@user803422 在评论中提到的似乎是解决方案。

苦思冥想之后,我在主文件中添加了以下代码行,现在它按预期工作了

setbuf(stdout, NULL );

关于如果将输出重定向到文件,Linux 进程行为不当 (MQTT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53612803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com