2012-06-04 42 views
0

我在一個shell腳本一直試圖用標準的重新定向使用zenity,像zenity拋出glibc的錯誤

,因爲我在$(SEQ 110);做echo $ i;完成| zenity --list --column = 「數字」

但在命令行工作的,但會引發以下警告上:

(zenity:3328):GLib的-WARNING **:無效的文件描述符。

這似乎只有當數據通過管道重定向到Zenity命令時纔會發生。

任何人都可以告訴我這個警告是什麼意思?

+0

請注意,我使用Ubuntu 11.10 –

回答

1

嘗試關閉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,那麼我認爲警告可以安全地忽略。

+0

感謝Petesh,我也認爲警告可以安全地忽略。這裏有一個奇怪的事實是,這個警告只能在Linux的某些地區發現,例如Fedora似乎沒有發生這種情況。 T –

+0

它似乎是從不同的Linux發行版代碼基礎構建的。 –