gpt4 book ai didi

c++ - IPC : Communication of C++-program with a group of bash scripts and C++-programs

转载 作者:行者123 更新时间:2023-11-30 17:12:04 25 4
gpt4 key购买 nike

在我的 Linux 系统上,我有多个 C/C++ 守护进程(大约 5 个守护进程)执行不同的任务。同时,我在系统中运行多个 bash 脚本,执行一些系统相关的任务(大约 7 个脚本)。我有一个单独的C/C++-守护进程作为中央错误处理程序运行,它专门用于以正确的 GUI 形式向用户显示错误消息。错误消息可以来自任何 C/C++ 守护程序和脚本。目前,我只需要从所有 C/C++ 守护进程和脚本到中央错误处理 C/C++ 守护进程的单向通信

我计划使用命名管道来实现这一点。有没有更好的方法来处理这种更鲁棒并以更好的方式处理并发的通信场景?

最佳答案

您可以使用一些低级协议(protocol)、命名管道或 Unix 域套接字重新发明它,也可以仅依赖标准的 syslog。它可以立即在 C/C++ (syslog) 和任何 shell (logger) 中使用,并且守护进程 syslogd 的配置足以发送消息对应于程序的专用设施。

我的建议是使用您的系统上未使用的本地设施(例如local6)并将其添加到文件/etc/syslog.conf中:

 # Pipe all local6 messages to the supervisor command
local6.* | /path/to/supervisor/command

您只需编写主管命令:它从标准输入接收行并将它们传递给您的守护进程 - 在这里您必须使用低级机制

缺点:

  • 您必须编写中间主管命令
  • supervisor 命令将在运行 syslogd 的用户(通常是 root)下运行
  • 您必须是计算机的管理员或要求管理员为您配置系统日志

优点:

  • syslog 是一段众所周知的强大代码,可以为您处理并发写入
  • 消息的编写仅使用标准工具和库
  • 免费获得多个消息级别
  • 您可以免费根据级别将消息存储到磁盘
  • 您可以免费根据级别通过邮件发送消息

关于c++ - IPC : Communication of C++-program with a group of bash scripts and C++-programs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31827323/

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