我在一個shell腳本一直試圖用標準的重新定向使用zenity,像zenity拋出glibc的錯誤
,因爲我在$(SEQ 110);做echo $ i;完成| zenity --list --column = 「數字」
但在命令行工作的,但會引發以下警告上:
(zenity:3328):GLib的-WARNING **:無效的文件描述符。
這似乎只有當數據通過管道重定向到Zenity命令時纔會發生。
任何人都可以告訴我這個警告是什麼意思?
我在一個shell腳本一直試圖用標準的重新定向使用zenity,像zenity拋出glibc的錯誤
,因爲我在$(SEQ 110);做echo $ i;完成| zenity --list --column = 「數字」
但在命令行工作的,但會引發以下警告上:
(zenity:3328):GLib的-WARNING **:無效的文件描述符。
這似乎只有當數據通過管道重定向到Zenity命令時纔會發生。
任何人都可以告訴我這個警告是什麼意思?
嘗試關閉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
,那麼我認爲警告可以安全地忽略。
感謝Petesh,我也認爲警告可以安全地忽略。這裏有一個奇怪的事實是,這個警告只能在Linux的某些地區發現,例如Fedora似乎沒有發生這種情況。 T –
它似乎是從不同的Linux發行版代碼基礎構建的。 –
請注意,我使用Ubuntu 11.10 –