1 问题出现原因
系统本身很大,现在因为其他情况要加入一些io口的驱动,例灯与按键的驱动。在想了两分钟之后决定用多进程的方式来解决这个问题。即能够实现功能,又可以降低程序(系统)本身的耦合度。(问一下进程之间的通信方式你们用过哪些)
2 问题解决
采用消息队列作为进程间通信方式
两个进程用相同的key,就能共享了。 之后就能通讯了。例如下面用1234做key
//接收方
msgid = msgget((key_t)1234, 0666 | IPC_CREAT);
if(msgrcv(msgid, (void*)&data, BUFSIZ, msgtype, 0) == -1)
{
fprintf(stderr, "msgrcv failed with errno: %d\n", errno);
exit(EXIT_FAILURE);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
msgid = msgget((key_t)1234, 0666 | IPC_CREAT);
if(msgsnd(msgid, (void*)&data, MAX_TEXT, 0) == -1)
{
fprintf(stderr, "msgsnd failed\n");
exit(EXIT_FAILURE);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////