Tag: gio

在C中读取unicode文件时出错

我想使用以下代码在C(Cygwin / GCC)中读取unicode文件: #include #include #include void split_parse(char* text){ char** res = g_strsplit(text, “=”, 2); printf(“Key = %s : “, res[0]); printf(“Value = %s”, res[1]); printf(“\n”); } int main(int argc, char **argv) { setenv (“CYGWIN”, “nodosfilewarning”, 1); GIOChannel *channel; GError *err = NULL; int reading = 0; const gchar* enc; guchar magic[2] = { 0 […]

如何使用Gnome GIO以非阻塞方式通过块读取文件?

什么是以非阻塞方式和chunk-by-chunk处理GInputStream的正确方法(GIO / Glib / GTK / Gnome)? 我有一个应用程序正在下载(通过libsoup)并以块的forms处理数据流并并行执行其他操作。 我在g_input_stream_read_async上调用g_input_stream_read_async (从soup_session_send_finish接收并给它一个合理大小的块来读取(在我的情况下为2048字节)。 收到g_input_stream_read_async回调后,我想继续读取字节。 因此,第一个想法是从回调处理程序递归调用g_input_stream_read_async ,将其自身作为下一个回调传递。 但这对我来说似乎很笨拙而且不太正确(而且我不确定将目前仍在执行的回调传递给GIO是否安全)。 替代方案可能是分离线程并在调用g_input_stream_read的循环中执行常规的阻塞读取。 但是它通常是如何在GTK / Gnome世界中完成的? 什么是正确的方法? 任何简单的工作示例(最好是与GTK / Gnome相关的开发人员)都将受到赞赏。