GDK ( GTK 的底层库) 的一个极好的特性是能让它检查文件描述符 (如 open(2) 或 socket(2) 返回的) 上的数据。这对网络应用程序尤其有用。这个函数:
gint gdk_input_add( gint source, GdkInputCondition condition, GdkInputFunction function, gpointer data ); |
第一个参数是你想监控的文件描述符。第二个参数指定你想让 GDK 寻找什么。它可以是:
GDK_INPUT_READ --- 当文件描述符有数据可供读取时调用你的函数。
GDK_INPUT_WRITE --- 当文件描述符做好写的准备时调用你的函数。
我确信你已经看出来了,第三个参数是当满足上述条件时你想要调用的函数,第四个参数是传递给该函数的参数。
返回值是一个标记,该标记可用于让 GDK 停止对文件描述符的监控,用函数:
void gdk_input_remove( gint tag ); |
回调函数应该声明为:
void input_callback( gpointer data, gint source, GdkInputCondition condition ); |
source 和 condition 就是前述的参数。