监控IO

GDK ( GTK 的底层库) 的一个极好的特性是能让它检查文件描述符 (如 open(2) 或 socket(2) 返回的) 上的数据。这对网络应用程序尤其有用。这个函数:

gint gdk_input_add( gint              source,
                    GdkInputCondition condition,
                    GdkInputFunction  function,
                    gpointer          data );

第一个参数是你想监控的文件描述符。第二个参数指定你想让 GDK 寻找什么。它可以是:

我确信你已经看出来了,第三个参数是当满足上述条件时你想要调用的函数,第四个参数是传递给该函数的参数。

返回值是一个标记,该标记可用于让 GDK 停止对文件描述符的监控,用函数:

void gdk_input_remove( gint tag );

回调函数应该声明为:

void input_callback( gpointer          data,
                     gint              source, 
                     GdkInputCondition condition );

sourcecondition 就是前述的参数。