Как узнать, какие программы поддерживают потоковый ввод-вывод

[115907] Для записи в файл, в данном случае в терминал, необходимо иметь права на запись в него. По умолчанию файл tty принадлежит (и может быть записан) пользователю, который его использует, а также записывается группой [116267]tty[116268], которая опять же по умолчанию содержит только [116269]root[116270]. Так что нет, не разрешается вмешиваться в чужие сеансы.[115908].
1
31.08.2015, 15:02
1 ответ

если программа поддерживает потоковый ввод-вывод, она может работать с файлами больше, чем размер памяти, правильно ли это

Обычно да, но не обязательно. Представьте себе программу, подобную uniq, но более сложную, которая подсчитывает количество вхождений каждой уникальной строки, полученной на вход. В отличие от uniq, она выводит текущий итог количества вхождений, замеченных на данный момент. Поэтому он считается потоковым, так как производит вывод по мере поступления входных данных. Но если каждая строка входных данных уникальна или близка к этому, ей придется запоминать каждую отдельную строку в структуре данных, чтобы поддерживать бегущий подсчет, и она фактически не сможет обрабатывать файл, который больше памяти.

Также есть ли способ узнать, какие программы поддерживают потоковый ввод/вывод?

Нет, если это не задокументировано или если вы не можете проверить это сами, нет, потому что это зависит от того, что делает программа.

Однако вы можете сделать нечто близкое: вы можете проверить, нужен ли программе входной файл с возможностью поиска. Некоторые программы принимают на вход либо трубку, либо обычный файл (или сокет, или что-то еще). Другие могут принимать только обычный файл. Если программа настаивает на обычном файле с возможностью поиска, то велика вероятность того, что она не делает никаких потоков. Если она позволяет использовать в качестве входных данных трубу, то велика вероятность, что она это делает. Но есть и исключения. Например, sort позволяет использовать трубу в качестве входа, но он не выполняет потоковую передачу: он выводит только то, что находится после конца входного файла.

6
27.01.2020, 23:14

Теги

Похожие вопросы