繁体   English   中英

进程间通信:命名管道或状态文件

[英]Inter-process communication: named pipes or status files

我正在构建一个包含Web服务的工具,该工具将在特定时间运行命令行工具。 平均而言,将同时运行15-20个CL工具。 每个CL工具平均运行时间不超过约0.5-1分钟。 Web服务需要能够每2-3秒左右检查一次每个CL的状态。

我对如何做有一些建议。 命名管道看起来像最好的“技术”解决方案。 但是,我想知道与简单的非常小的文本“状态”文件进行通信是否会是一种更好,更简单且出错风险更低的方法。 我喜欢最资源友好的解决方案。

请指教。

我之前做过类似的事情,这就是我所做的。

我通过将ProcessStartInfo.RedirectStandardOutput设置为true来启动命令行过程。 然后,通过执行以下操作开始监听命令行进程的输出:

process.OutputDataReceived += dataReceivedEventHandler;
process.BeginOutputReadLine();

然后在我的dataReceivedEventHandler ,解析DataReceivedEventArgs.Data以查看我的控制台应用程序是否向我发送了一个以我创建的标签开头的“消息”(例如:“ [ServerProgress] 10”)。

因此,基本上,应用程序是通过控制台输出进行通信的。 不优雅,但是它为我做了工作。

希望这可以帮助。

对于您的情况,状态检查-在那里不占很大空间,我每天都会使用命名管道。 使用内存>>在此处使用HDD。

命名管道会更好。 您可能会遇到尝试同时访问小文本文件的两个过程的访问问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM