免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1134 | 回复: 0
打印 上一主题 下一主题

GTK中Timeouts,IO以及Idle函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-02 22:45 |只看该作者 |倒序浏览
1 Timeouts
您可能会想要在gtk_man idle时, 做一些事情. 你有好几个选择. 使用以下这些函数可以产生一个timeout函数, 它每间隔一阵子就会去呼叫您的函数.
gint gtk_timeout_add (guint32 interval,
                      GtkFunction function,
                      gpointer data);
第一个参数是每间隔interval milliseconds会去呼叫您的函数. 第二个是该函数. 第三个是要传给该函数的资料. 返回值则为该行程的"标签".
void gtk_timeout_remove (gint tag);
您可以在您的timeout函数返回zero或FALSE来停止timeout函数. 这就是说您必须返回非零值, 如TRUE.
下面是一个timeout中callback例子:
void callback (void)
{
    FILE *output;
    output = popen("ls", "r");
    pclose(output);
   
    g_print ("Hello World\n");
   
    return;
}

这里callback函数返回类型为void,返回值将是一个随机数,如果你想让callback按照你设定的时间来repeat,那么必须保证你的callback返回非零值
ps:曾经就因为没有注意callback返回值吃过亏,不仔细阅读文档的后果啊!  -_-!
你的callback函数必须像这样:
gint timeout_callback (gpointer data);
2 监督IO
GTK另一个漂亮的功能是有办法去检查一个file descriptor的资料. (as returned by open(2) or socket(2)). 这个在网路软体上很有用:
gint gdk_input_add (gint source,
                    GdkInputCondition condition,
                    GdkInputFunction  function,
                    gpointer data);
第一个参数是您想看的file descriptor, 第二个是你要GDK去看那一项, 可以是以下几项:
GDK_INPUT_READ - 当file descriptor有资料的时候会去呼叫您的函数.
GDK_INPUT_WRITE - 当您的file descriptor可以被写入资料的时候.
第三个当然是callback函数. 第四个是要传给callback的资料.
返回值是可用来停止监督的一个"标签".
void gdk_input_remove (gint tag);
当您的callback函数返回zero或FALSE时, GTK会停止呼叫您的callback函数.
3 Idle函数
当什麽事情都不发生时, 您要呼叫一个函数时要怎麽办?
gint gtk_idle_add (GtkFunction function,
                   gpointer data);
当什麽事都不发生时, GTK会去呼叫这个函数.
void gtk_idle_remove (gint tag);
这个不用解释了吧. 您若在idle函数返回zero或FALSE会停止idle函数的运行.



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/50931/showart_1357788.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP