我一直在尝试在shell脚本中使用标准重定向的zenity,比如
在$(seq 1 10)中表示i的;do echo $i;do\ zenity --list -列="Number"
但是,在命令行中,这是可行的,但引发了以下警告:
(zenity:3328):GLib-警告**:无效的文件描述符。
这似乎只有在数据通过管道重定向到Zenity命令时才会发生。
有人能告诉我这个警告意味着什么吗?
发布于 2012-06-05 08:26:01
这个错误是通过尝试关闭stdin两次触发的--一次是在从序列中读取了所有数据之后,第二次是因为它即将退出--这是在zenity源中。它纯粹是表面的,可以被安全地忽略-- zenity代码除了在那一点上退出之外,什么也不做。
在处理程序zenity_tree_handle_stdin中,在例程结束时,它关闭相同的通道(在函数中和全局范围内使用相同的命名变量会导致变量隐藏):
if ((condition != G_IO_IN) && (condition != G_IO_IN + G_IO_HUP)) {
g_io_channel_shutdown (channel, TRUE, NULL);
return FALSE;
}在tree.c ~第648行中,程序即将退出:
if (channel != NULL)
g_io_channel_shutdown (channel, TRUE, NULL);这两种代码路径都将尝试关闭相同的通道,从而导致警告。因为第648行之后所做的下一件事是发出一个gtk_main_quit,所以我认为可以安全地忽略这个警告。
https://stackoverflow.com/questions/10879942
复制相似问题