2016-08-07 193 views
1

通過UNIX domain socket?Qt進程如何與正常的Linux進程進行通信?

通過正常的TCP/UDP套接字?

在我的xenomai層,我用xddp來生成一個虛擬端口(/ dev/rtp0),正常的Linux進程可以通過打開這個端口來訪問,並且讀/寫這個流。但是Qt難以使用QFile訪問端口。

+2

過程是一個過程是一個過程。他們之間沒有區別。運行Qt程序的進程,以及運行其他程序的進程,他們可以使用任何你認爲合適的方法進行通信。套接字?管?消息隊列?而任何其他的[進程間通信](https://en.wikipedia.org/wiki/Inter-process_communication)方法你可以想到的將工作得很好。 –

+0

謝謝。我測試了UNIX域套接字,但是有一些連接問題,所以我懷疑我的工作方向是錯誤的。 –

回答

2

通過UNIX domain socket? 通過正常的TCP/UDP套接字?

答案是:是的,兩者,爲什麼不呢?

Qt進程是正常的進程,他們可以做任何其他的Linux進程可以做的事情。您應該能夠打開一個設備文件,就像您在其他任何進程中打開它一樣。還請注意,沒有人的強迫您使用QFile;您可以使用正常的fopen/fread/mmap/ioctl ..無論您如何與您的/dev/rtp0進行交互,但我認爲沒有任何東西阻止您像QFile一樣處理文件,並在您需要時立即獲取低級文件描述符它來自那個班。

+0

謝謝。我對Qt不是很熟悉,當我打開/ dev/rtp0端口時,我嘗試了QFile和QTextStream,但沒有任何內容被讀取。我也沒有在這個主題上找到很多例子。 –

+0

如果您正在處理Xenomai,那麼您就是一名嵌入式開發人員!如果你想與實時系統內核接口通信,我認爲你應該準備好使用Linux文件句柄。 QFile擁有非常豐富的文檔,並在數千個項目中使用;如果你看起來更難一點,我敢肯定你可以找到一個使用它的例子。 –

+0

可以肯定的是,實時系統可能不會與您交換信息,非常適合「文本流」的想法。但也許我錯了。無論如何,看來你應該分解你的問題一點:編寫一個能夠與你的xddp設備成功對話的Linux程序。同樣的程序也應該和Qt一起工作。 –

0

我測試了QLocalServer,它的工作原理! Qt進程可以通過UNIX域套接字將數據發送到xenomai進程。

相關問題