簡體   English   中英

C ++將參數傳遞給已經運行的程序

[英]C++ passing arguments to a program already running

我正在閱讀有關使用語音命令控制應用程序的教程,在控制rhythmbox的示例中,它建議執行以下命令:

rhythmbox-client --play
rhythmbox-client --pause

為什么這不是簡單地打開程序的新實例,我如何在我自己的程序中模擬功能? 例如,我如何將字符串傳遞給程序的特定實例?

謝謝

Rhythmbox使用進程間通信來實現此類功能,這可以通過多種不同方式實現。 其中一個是使用D-Bus,就像Rhythmbox一樣。

使用D-Bus並不是很容易,但基本的想法是你在D-Bus中注冊你的應用程序,所以其他應用程序可以調用你的應用程序導出的不同程序(例如播放/停止動作),然后在同一個應用程序中一個客戶。 這樣,如果傳遞了像--play這樣的參數,則不會運行常用代碼,而只需檢查正在運行的應用程序的實例並向已運行的程序發送命令。

另一方面,當沒有傳遞參數時,程序就會啟動並注冊正確的觸發器,以便后來調用的實例可以控制它。

這是關於dbus和DBus主頁教程

有幾種技術只能運行一個應用程序實例。 在這些術語中稱為yyy --play通常意味着相同

INSTANCE = GET_RUNNING_INSTANCE()
IF INSTANCE == NULL
   INSTANCE = CREATE_NEW_INSTANCE()
SEND_MESSAGE(INSTANCE, PLAY)

例如,我如何將字符串傳遞給程序的特定實例?

您需要使用操作系統提供的任何進程間通信工具。 例如套接字或命名管道或消息。

暫無
暫無

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

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