ну так в этом и дело, что если запустить несколько экземпляров данного скрипта, то один система может убить, а второй она просто не успеет он запросит больше памяти чем есть и получит xmalloc. Этот скрипт есть примерно 180 мб в сек
Алексей Черемисин, странно, что getch интерпретирует изменения размера, как ввод. И почему-то getch возражает 410. Это какой-то код символа управления?
Так же есть проблема: при уменьшении размера терминала, до размера меньшего, чем содержание, например строки, то символы, которые превышают размер терминала просто стираются. То есть, к примеру, есть строка длинной 100 символов, размер терминала такой же, но если изменить размер терминала до 80 символов, то последнии двадцать символов строки просто удаляться. Можно ли как-нибудь этого избежать?
Тимур Покровский, потому что хотелось бы обойтись без initscr. Да и без ncurses в целом, но, как понял, в стандарте ничего нет об этом, поэтому без него не обойтись (
Saboteur, а как может хватить 80? к примеру, строка 200 символов, man ее wrap на 80 символе, но в поток передается без этого ограничения, так как он это не понимает, соответсвенно grep передается полная строка без переносов, но man говорит, что должно быть 80 и следовательно grep говорит, что не может break the line. Получаем warning. Или это как-то не так работает? К примеру, cat выводит wrap man как просто новую строку, но grep такое не может.
Saboteur, да это работает, но только при достаточно большом разрешении, в других случаях значения верны, но получаются warnings, так что все равно нужно использовать MANWIDTH, если запускать в терминале не на все разрешение
Saboteur, что интересно, так это то, что даже при самом большом разрешении терминала, не достигается значения достаточного для нахождения всех повторений.
Saboteur, проблема в MANWIDTH, так как man по дефолту используют определённую длину для wrap, но так как stdin такого не понимает, то grep просто выдает предупреждение can't break the line. Решается MANWIDTH=1000. Я написал программу и с помощью нее проверил, сколько же все таки там слов и сколько раз они повторяются. Все значения совпали при MANWIDTH>=1000. Так что более чем уверен, что дело в этом.
Valdemar Smörman, я имел ввиду не много другое, вот, к примеру, даже после выполнения этого скрипта создать другой скрипт и использовать в нем upd, то получим ошибку "command not found". т.е скрипт не увидит aliases которые уже есть.