各位大大好
我目前在一个无法提供QtDBus的embedded平台上开发软体
想做到Qt编译出来的exe
与一般C/C++编译出来的exe
之间的相互沟通...
目前开发平台:ubuntu 8.0.4
目标运作平台:MIPS SoC w/i embedded linux
因为目标运作平台目前没有QtDBus的支援,我采取如下的写法:
一般C程式,属于IPC message发送端
- #include <unistd.h>
- #include <sys/ipc.h>
- #include <sys/msg.h>
- #define MESSAGE_BUFFER 128
- struct Messages
- {
- long mtype;
- char mtext[MESSAGE_BUFFER];
- };
- int main(int argc, char *argv[])
- {
- key_t key=0x1024;
- int msgId=0, received=0, i=0;
- struct Messages msgS;
- msgId=msgget(key, 0666|IPC_CREAT);
- printf("SEND : Begin send IPC message to other process...\n");
- strcpy(msgS.mtext, "Message from other(non-Qt) c process !!!\n");
- for(i=0; i<10; i++)
- {
- printf("SEND : Sending %d...\n", i+1);
- msgsnd(msgId, &msgS, MESSAGE_BUFFER, 0);
- sleep(1);
- }
- printf("SEND : Sender terminated.\n");
- return 0;
- }
-------------------------------------
Qt程式,属于接收端
- #include <QtCore/QCoreApplication>
- #include <unistd.h>
- #include <sys/ipc.h>
- #include <sys/msg.h>
- #define MESSAGE_BUFFER 128
- struct Messages
- {
- long mtype;
- char mtext[MESSAGE_BUFFER];
- };
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- key_t key=0x1024;
- int msgId=0, result=0;
- struct Messages msgS;
- strcpy(msgS.mtext, "...");
- fprintf(stderr, "RECEIVE : Begin receive IPC message from other process...\n");
- msgId=msgget(key, 0);
- while(1)
- {
- result=msgrcv(msgId, &msgS, MESSAGE_BUFFER, 0, IPC_NOWAIT);
- fprintf(stderr, "RECEIVE : Received message> %s\n", msgS.mtext);
- fprintf(stderr, "RECEIVE : Result> %d\n", result);
- result=0;
- sleep(1);
- }
- fprintf(stderr, "\nRECEIVE : Ending program...\n");
- return a.exec();
- }
-------------------------------------
但接收端一直得到-1的状态(没收到IPC message)
输出结果
- RECEIVE : Received message> ...
- RECEIVE : Result> -1
- RECEIVE : Received message> ...
- RECEIVE : Result> -1
- RECEIVE : Received message> ...
- RECEIVE : Result> -1
- RECEIVE : Received message> ...
- RECEIVE : Result> -1
- RECEIVE : Received message> ...
- RECEIVE : Result> -1
- RECEIVE : Received message> ...
- RECEIVE : Result> -1
可以请大大们帮忙看看是怎么回事吗?
附注:我是用繁体中文的,用工具转简体贴过来。
可能有些名词用语不太一样还请海涵~