2016-10-25 35 views
0

我正在linux環境中運行大型計算應用程序。我的目標是創建一個接口,可以從shell窗口與應用程序進行通信,並從應用程序獲取結果並將其打印在shell中。從shell中與正在運行的進程通信

比方說,我有一個應用程序,可以將素數無限地寫入文件。一定時間後,如果你想知道應用程序在做什麼,是有可能創造一個接口一樣,

$[ pid ] "Display current number in check"; 
$The number, 17559323 is currently checked if its a prime. 

這是故意的,我不得不在提示符「$」,它應該對普通用戶有可能溝通。信號需要特權執行。由於我可能有很多此應用程序運行的實例,因此我不知道套接字如何實際上可以提供幫助,因爲我想專門討論獲取狀態的過程。 從shell中與正在運行的進程進行通信的任何方向都將非常有幫助。

+0

您可以讓您的應用程序在套接字上偵聽命令。客戶端程序可以連接到該套接字,發送命令,讀取響應並將其顯示給用戶。如果您有多個應用程序正在運行,只需讓每個應用程序打開一個套接字(可能是在PID之後將其命名)。 – larsks

+0

這不會給我無客戶端的界面,我正在尋找。還需要有一個小型的客戶端應用程序,以便我的同事與應用程序進行通信。這意味着工具集不是獨立的。 (不支持像bash stdin/out這樣的os工具) – Veera

+0

因此,不要使用套接字,而應將其設置爲嵌入式http服務器。現在你可以用'curl'來查詢它。 – larsks

回答

0

使用日誌:客戶端可以grep(或尾部)這將記錄以查看正在發生的事情。您可以始終寫入日誌文件或創建一個信號處理程序,在接收到信號後將所需信息轉儲到文件。

+0

這並不回答與通過shell運行的進程進行通信的任何部分。對於正在運行的進程,編寫這樣一個日誌的效率非常低,如果沒有人爲該實例執行輪詢狀態,2.由於硬盤的r/w週期,它會減慢應用程序的運行速度,3.只會轉儲空間。主要目的是信息聚合,而不是執行文件。 – Veera

相關問題