linux gtk_timeout_add用法,GTK中Timeouts,IO以及Idle函数

您可能会想要在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);

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函数.

当什麽事情都不发生时, 您要呼叫一个函数时要怎麽办?

gint gtk_idle_add (GtkFunction function,

gpointer data);

当什麽事都不发生时, GTK会去呼叫这个函数.

void gtk_idle_remove (gint tag);

这个不用解释了吧. 您若在idle函数返回zero或FALSE会停止idle函数的运行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值