【发布时间】:2015-11-08 16:49:19
【问题描述】:
我正在编写一个数据记录应用程序,它从外部设备读取一些值并定期将它们保存到文件中。另外,我希望应用程序有一个服务器组件,可以通过 TCP/IP 访问当前读数。
应用程序是(正在)在类 unix 环境中用 C 语言编写的。
我不确定服务器是否应该作为一个单独的进程运行(fork 在启动后自行离开)并使用一些 IPC 来获取数据,还是只作为一个单独的线程更好?
做出这样的决定需要哪些因素?
谢谢!
【问题讨论】:
-
您是否检查过您操作系统上现有的日志系统是否可以满足您的需求?在大多数类 unix 系统上,您有 syslog/syslogng/others。它们为此而生,记录在案,从本地/网络连接读取数据,并且还能够将日志转发到其他机器。
-
服务器应该只读取记录器写入的文件,还是应该通过独立发送从设备读取的内容来缩短它?
-
@alk,数据所在的文件是一个循环数据库,每个大约采样一次。 5 分钟,而服务器读取“几乎实时”的数据。所以直接从设备上读取是必须的。
-
@alk:描述中没有明确说明!不确定这是否适合实时,你是对的。但这可能取决于什么是实时:读取实时与写入实时不同(或在外部提供)
-
@hexasoft:我的评论并不是批评。总的来说,我完全同意使用现有的、经过良好测试的解决方案是首选方法。我也同意,更多地了解时间和数据质量/损失约束对于在此处提供任何有意义的建议至关重要。
标签: c multithreading unix