簡體   English   中英

Linux Shell在運行一個應用程序的多個實例時掛起

[英]Linux shell hangs on running multiple instances of an application

我正在通過popen()從C程序運行“ flute”(發送多播通信的協議)應用程序/二進制文件(已下載)。 該應用程序具有一個功能/錯誤,該功能/錯誤不會在后台運行,因為它使用外殼程序執行一些命令。 在運行期間,應用程序將鎖定外殼。 這意味着您只能在shell中鍵入一些預定義的字母,否則必須等到最后。 因此,當我從c代碼使用popen()運行應用程序的多個實例時,shell會永久掛起,這可能是因為兩個應用程序都試圖同時使用它(我的假設)。 但是我可以在不同的shell中手動運行多個實例。 這是從C程序運行它的示例代碼。

FILE* pF = popen("./flute -send -a226.0.0.1/6789 /media/song.mp3", "r");

有什么解決方法可以防止外殼掛起。 請幫忙。

如果該進程只是因為它向您的pF發出了提示而掛起,現在被阻止從繼承的stdin中讀取,則可以:

  • 將從pF讀取的提示轉發到stdout以便其顯示在終端上-然后您將知道何時/該輸入什么
  • 或手動fork並攔截stdinstdout :提示將不會進入您的終端,並且您的程序可以以編程方式發送“預定義字母”

如果該進程因正在使用繼承的終端確實在做某事而掛起,則可以為每個子進程創建一個偽終端,這樣它們就不會與同一個控制終端發生混亂。 請參閱此問題以供參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM