Ну, если Вы думаете, что хинду появляется получение по запросу слишком многих зависимостей, Вы могли бы попробовать Slackware. Или одна из его производных. Out-of-the-box, Slackware не пытается разрешить зависимости. Вообще.
Вы могли бы также хотеть исследовать Лунный Linux или ЗАТРУДНЕНИЕ.
Это похоже на ошибку в zenity. Вы видите то, что продолжается при помощи strace
инструмент (я перенес strace строки в это сообщение, чтобы помочь читать).
С версией канала эта строка в strace показывает то, что происходит, когда канал закрывается (потому что cat
выходы):
poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}, {fd=0, events=POLLIN}], \
3, 0) = 1 ([{fd=0, revents=POLLIN|POLLHUP}])
Та часть в конце - fd=0, revents=POLLIN|POLLHUP
, в особенности POLLHUP
- говорит zenity, что stdin завис (устройство записи канала ушло). Zenity обрабатывает это правильно и закрывает fd 0 позже.
Файлы не добираются POLLHUP
события - вместо этого a read(2)
результат нулевых средств EOF. Это - другой путь выполнения кода для zenity. Это опрашивает снова относительно fd 0, и это - то, что это получает:
poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}, {fd=0, events=POLLIN}],\
3, 0) = 1 ([{fd=0, revents=POLLIN}])
read(0, "", 1024) = 0
Это должно быть концом его - нулевое чтение должно заставить zenity закрывать fd 0. Но это не делает. Вывод strace выше продолжает повторяться, как zenity продолжает опрашивать fd 0. До fd 0 закрывается, это всегда будет готово к чтению, как, именно так дескрипторы файлов на работе EOF, так как необходимо считать его для получения результата EOF.
Поскольку zenity не отвечает правильно на EOF на stdin, это сохраняет цикличное выполнение на a poll(2)
/read(2)
цикл, где poll
возвраты сразу, как делает read
. Снова, и снова и снова...
Попробуйте это:
zenity --text='This does NOT hog the CPU' --list --column='#' --width=450 <(cat test)
/dev/fd/63 instead
... но sed -n p <(cat test)
хорошо работает.. это производит правильный текст... Возможно, это - просто zenity вещь, но я все еще хотел бы знать то, что diffeence между' <тест' и 'тест кошки |', с которым zenity имеет проблемы.
– Peter.O
16.07.2011, 07:54
<test
. Различие находится в отправке данных как канал stdin по сравнению с передачей дескриптора файла, который будет открыт и считан программой.
– Caleb
16.07.2011, 18:02