2011-05-01 65 views
0

我對Qt有點新,我想了解共享內存應用程序,當你有多個使用共享內存但不應該交互的軟件時會發生什麼。Qt - 用於多個IPC應用程序的多個共享內存空間?

我期待在這個基本的演示/例子:http://doc.qt.io/qt-5/qtcore-ipc-sharedmemory-example.html

可以說,我開發的軟件應用程序A和應用軟件B.這兩個應用程序使用Qt的共享內存,並作出使用共享內存海誓山盟溝通。

然後讓說,用戶也正在運行的軟件應用X,恰巧也使用Qt的共享內存用於其他目的。軟件應用程序X與應用程序A和應用程序B完全不相關。

查看Qt共享內存的文檔,我不明白您的應用程序如何使用共享內存來區別於其他嘗試使用Shared的應用程序記憶。什麼使App X通過共享內存將垃圾數據發送到App A和App B?

此外,關於上述例子中的一個大問題是,Qt的共享內存的演示,他們使用您多次運行以及它們之間的共享內存的事情發生較爲單一的應用程序。您是否能夠開發兩種完全不同的軟件,它們通過共享內存一起工作,還是僅限於具有多個實例打開的單個應用程序?

回答

1

綜觀對Qt的 共享內存的文件,我不知道如何 應用程序中使用的共享內存 在區分自己 從試圖 使用共享內存的其他應用程序的方式。

您使用您的應用程序共享的密鑰。因此,可以通過constructor設置:

QSharedMemory::QSharedMemory (const QString & key, QObject * parent = 0)

或者功能setKey()

void QSharedMemory::setKey (const QString & key)

但是,如果另一個應用程序中使用相同的密鑰,或猜測你的鑰匙,你可以有麻煩。因此,防止這種情況的一種方式是生成密鑰的某種形式的混淆。

此外,關於上述 例如,一個大問題是,Qt的共享內存 演示,他們使用一個單一的應用 您運行不止一次和 之間的 共享內存的事情發生他們。您是否能夠開發兩個 完全不同的 軟件,這些軟件可以通過Shared共同工作 內存或者是否僅限於一個具有多個 實例的單個 應用程序?

使用共享存儲器是共享相同主機單獨的進程之間的數據。因此,它可能是知道或共享密鑰的相同應用程序或其他應用程序的多個實例。

相關問題