ls
использование программы isatty()
знать, является ли fd 1 tty или чем-то еще (канал, файл, и т.д. …). От man 3 isatty
:
int isatty(int fd);
ОПИСАНИЕ
isatty()
функционируйте тесты лиfd
открытый дескриптор файла, относящийся к терминалу
Updade: строка 1538 в ls.c
от coreutils (пересмотр мерзавца 43a987e1):
if (isatty (STDOUT_FILENO))
{
format = many_per_line;
/* See description of qmark_funny_chars, above. */
qmark_funny_chars = true;
}
(many_per_line
должно быть самодокументированным.)
После 15 часов отладки я нашел проблему: программа попыталась отправить чрезвычайно большие пакеты, где часто размер, переданный sendto, превышал максимальный позволенный размер для пакетов UDP 2^16 байты. Теперь я добавил некоторую логику, которые устанавливают максимальный размер пакета, переданный sendto к 50 000, и все работает снова. Действительно странно, что это ранее работало с более старым ядром и Windows XP и 7 вообще.
Сравните .config от 2.6.11 и 2.6.15. Мое предположение - то, что на Вашем новом ядре Вы имеете CONFIG_IP_MULTICAST=n
(или возможно m
). Это должно быть y
.