簡體   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