IPC: c++程序与一组bash脚本和c++程序的通信

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

本文关键字:c++ 程序 脚本 bash 一组 通信 IPC      更新时间:2023-10-16

在我的Linux系统上,我有多个C/c++ -守护进程(大约5个守护进程)执行不同的任务。同时,我有多个bash脚本在系统中运行,执行一些与系统相关的任务(大约7个脚本)。我有一个单独的C/c++ -守护进程运行作为中央错误处理程序,这是专门用于显示错误消息的用户在适当的GUI形式。错误消息可以来自任何C/c++守护进程和脚本。现在,我只需要uni-directional communication from all the C/C++-daemons and scripts to central error handling C/C++-daemon

我计划使用命名管道来实现这一点。是否有更好的方法来处理这种通信场景,它更健壮,并以更好的方式处理并发性 ?

您可以使用一些低级协议,命名管道或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命令:它从标准输入中接收行并将它们传递给您的守护进程-这里您必须使用低级机制

缺点:

  • 你必须写中介主管命令
  • supervisor命令将在syslogd(通常为root)用户下运行
  • 您必须是机器上的管理员或要求管理员为您配置syslog

优点:

  • syslog是一段众所周知的健壮的代码,它将为您处理并发写。
  • 消息写入只使用标准工具和库
  • 您可以免费获得多个消息级别
  • 您可以免费获得根据
  • 级别将消息存储到磁盘的可能性
  • 您可以免费获得通过邮件发送消息的可能性取决于
  • 的级别