QT进程间通信(共享内存和本地socket)

373 views
Skip to first unread message

ci ci

unread,
Oct 13, 2009, 10:56:53 AM10/13/09
to Qt中文
初到贵地!请大家多多指点!
在我的QT界面程序中,我用QProcess调用外部程序,但是我想在界面中显示这个外部程序的数据,请问如何得到自己想要的外部程序中的数据
呢?
我看了QT帮助文档,因为在 windows环境下,所以能用共享内存和socket。
问题是:这两种方法具体该怎么用?
1.我在外部程序中将数据加入共享内存,这样在QT的界面程序中也能调用吗?
2.socket该怎么用?windows没有本地socket这一说吧,是要发到回环地址127.0.0.1吗?

这个问题很困扰,有经验的大牛能指点下吗?万分感谢!

Liang Qi

unread,
Oct 13, 2009, 11:08:20 AM10/13/09
to qt-c...@googlegroups.com
QProcess中可以和你调用的程序进行输出的读取,输入的写入等操作的
可以看看
http://doc.trolltech.com/4.6-snapshot/qprocess.html
Detailed Description
Communicating via Channels

Windows下可以使用QLocalSocket和QSharedMemory的
http://doc.trolltech.com/4.6-snapshot/qsharedmemory.html
http://doc.trolltech.com/4.6-snapshot/qlocalsocket.html

The QLocalSocket class provides a local socket.

On Windows this is a named pipe and on Unix this is a local domain socket.

齐亮

2009/10/13 ci ci <newc...@yahoo.cn>:

--
http://www.qiliang.net

ci ci

unread,
Oct 13, 2009, 11:10:46 AM10/13/09
to Qt中文
齐亮 啊!久仰大名!我去过你的博客!
谢谢你的回复!我去学习下

On 10月13日, 下午11时08分, Liang Qi <cavendish...@gmail.com> wrote:
> QProcess中可以和你调用的程序进行输出的读取,输入的写入等操作的
> 可以看看http://doc.trolltech.com/4.6-snapshot/qprocess.html


> Detailed Description
> Communicating via Channels
>

> Windows下可以使用QLocalSocket和QSharedMemory的http://doc.trolltech.com/4.6-snapshot/qsharedmemory.htmlhttp://doc.trolltech.com/4.6-snapshot/qlocalsocket.html


>
> The QLocalSocket class provides a local socket.
>
> On Windows this is a named pipe and on Unix this is a local domain socket.
>
> 齐亮
>

> 2009/10/13 ci ci <newch...@yahoo.cn>:

ci ci

unread,
Oct 13, 2009, 11:17:43 AM10/13/09
to Qt中文
我的意思是我调用的那个外部程序如何将数据加入共享内存才能让我的QT界面程序读取,肯定不是用QT中的QSharedmemory吧,可以用
CreateFileMapping,但是这样在界面程序中能读出来吗?
socket:On Windows this is a named pipe,这个只知道,没去试过.我明天去试下!
再次感谢!

On 10月13日, 下午11时10分, ci ci <newch...@yahoo.cn> wrote:
> 齐亮 啊!久仰大名!我去过你的博客!
> 谢谢你的回复!我去学习下
>
> On 10月13日, 下午11时08分, Liang Qi <cavendish...@gmail.com> wrote:
>
> > QProcess中可以和你调用的程序进行输出的读取,输入的写入等操作的
> > 可以看看http://doc.trolltech.com/4.6-snapshot/qprocess.html
> > Detailed Description
> > Communicating via Channels
>
> > Windows下可以使用QLocalSocket和QSharedMemory的http://doc.trolltech.com/4.6-snapshot/qsharedmemory.htmlhttp://doc.tr...

Liang Qi

unread,
Oct 13, 2009, 11:20:24 AM10/13/09
to qt-c...@googlegroups.com
Windows下的进程间通讯方式,Qt/Windows肯定可以读取的,但需要注意eventloop更新界面。

但这样的代码,不能迁移到其它平台。

齐亮

2009/10/13 ci ci <newc...@yahoo.cn>:


> 我的意思是我调用的那个外部程序如何将数据加入共享内存才能让我的QT界面程序读取,肯定不是用QT中的QSharedmemory吧,可以用
> CreateFileMapping,但是这样在界面程序中能读出来吗?
> socket:On Windows this is a named pipe,这个只知道,没去试过.我明天去试下!
> 再次感谢!

--
http://www.qiliang.net

ci ci

unread,
Oct 13, 2009, 11:29:10 AM10/13/09
to Qt中文
非常谢谢!!!
外部程序中要是想用QT的共享内存函数的话该怎么办呢?将QT得库加进去?这样那个外部程序变得太大了吧?
那QLocalSocket是不是也做不到兼容啊
想要平台之间的兼容性,是不是只能通过宏开关来实现了?

On 10月13日, 下午11时20分, Liang Qi <cavendish...@gmail.com> wrote:
> Windows下的进程间通讯方式,Qt/Windows肯定可以读取的,但需要注意eventloop更新界面。
>
> 但这样的代码,不能迁移到其它平台。
>
> 齐亮
>

> 2009/10/13 ci ci <newch...@yahoo.cn>:

Mike Chen

unread,
Oct 13, 2009, 9:15:17 PM10/13/09
to qt-c...@googlegroups.com
Qlocalsocket无法兼容本地api?
Reply all
Reply to author
Forward
0 new messages