LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 954|回复: 12

我想实现一个简单的事件驱动机制。。。

[复制链接]
发表于 2004-5-19 22:56:23 | 显示全部楼层 |阅读模式
只需蛮简单的,程序一开始运行后进进入消息循环,收到消息后就处理,然后继续等待消息。
在Linux下应该用什么机制来实现阿?用singnal?pipe?or System V的那三个IPC机制?
请那位大虾指点个迷津,给个方向,好让我不要南辕北辙。
 楼主| 发表于 2004-5-19 22:57:52 | 显示全部楼层
是否还需用到多线程,就是一个线程显示界面,一个线程处理消息循环?
发表于 2004-5-19 23:00:26 | 显示全部楼层
这么多种消息,处理哪种阿。。。寒@@@:rolleyes:
 楼主| 发表于 2004-5-19 23:01:57 | 显示全部楼层
当然是只处理自己定义好的几种消息了,其他的忽略
发表于 2004-5-19 23:13:18 | 显示全部楼层
有是i/o阻塞,不知道符合不符合啊?
发表于 2004-5-19 23:24:45 | 显示全部楼层
Linux的IPC机制已经提供了消息传递
消息其实就是字节序列而已,消息队列可以根据权限在进程间共享。
在此给出若干系统调用的原型:

  1. #include<sys/msg.h>

  2. [color=blue]int msgget(key_t key, int permflags);[/color]       
  3. /*创建一个消息队列或取得对已有队列的访问权*/
  4. /*key是一个数用以标识消息队列, permflags决定对消息队列的操作*/

  5. [color=blue]int msgsnd(int mqid, const void * message, size_t size, int flags);[/color]
  6. /*向消息队列发送消息*/
  7. [color=blue]int msgrcv(int mqid, void * message, size_t size, long msg_type);[/color]
  8. /*从已有消息队列接收消息*/

  9. [color=blue]int msgctl(int mqid, int command, struct msqid_ds *msq_stat);[/color]
  10. /*获取消息队列状态或者进行设置*/
复制代码
 楼主| 发表于 2004-5-19 23:30:17 | 显示全部楼层
我还要处理键盘和鼠标事件,这些事件如何传递给这些消息队列呢。
发表于 2004-5-19 23:30:20 | 显示全部楼层
你究竟要你的进程作为一个消息服务器还是消息客户端呢?
还有,你的目的是什么呢?

要把问题描述清楚,大家才可以帮你。
发表于 2004-5-19 23:33:46 | 显示全部楼层
最初由 Lonsn 发表
我还要处理键盘和鼠标事件,这些事件如何传递给这些消息队列呢。

没必要使用消息吧,不要把windows这类消息事件驱动操作系统的概念混淆进来。:ask
 楼主| 发表于 2004-5-19 23:39:51 | 显示全部楼层
我想实现一个简单的带消息驱动的GUI系统,当然不要象windows的那样复杂。我已经在控制台下用Framebuffer做了一些简单的图形界面库函数,接下来要处理处理主要是键盘和鼠标的事件处理,然后重现绘制界面。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表