Почему опции вида-c (проверка, если отсортировано), и-o (запишите в выходной файл), не compatiable

Добавление к ответу Useless:
Библиотечные функции быстрее, чем системные вызовы и обычно не содержат соображения разрешения/безопасности, когда они работают с полномочиями процесса, и это - память.

Syscalls, с другой стороны, так как они работают в ядре, имеют доступ ко всему в системе, и таким образом, они должны управлять тем, что может сделать обработка вызовов, когда это называет их (проверьте, что это имеет полномочия открыть файл, например), кроме того, так как syscalls находятся в ядре, называние их требует контекстного переключения в ЦП, который является очень тяжелым процессом относительно просто вызова вызова библиотеки.

Syscalls обычно отражаются как система использование ЦП в программах мониторинга.

2
06.10.2013, 07:28
4 ответа

Поскольку Вы говорите этому, что хотите только - проверка, которая не генерирует вывод, и Вы также указываете, что хотите, чтобы отсортированный - вывод перешел к определенному файлу. Это взаимоисключающие понятия, и они осуществляются в sort.c (гну coreutils 8.20) с

  if (checkonly)
    {
      …

      if (outfile)
        {
          static char opts[] = {0, 'o', 0};
          opts[0] = checkonly;
          incompatible_options (opts);
        }
6
27.01.2020, 21:50

Принятие Вас использует GNU sort, опции, которые Вы упоминаете, делают:

   -c, --check, --check=diagnose-first
          check for sorted input; do not sort
   -o, --output=FILE
          write result to FILE instead of standard output

-c флаг просто сообщит Вам, отсортирован ли вход уже:

$ echo -e "A\nB\nC" | sort -c
$ echo -e "A\nC\nB" | sort -c
sort: -:3: disorder: B

Так, если вход отсортирован, ничто не печатается и если inpnut не отсортирован, сообщение об ошибке печатается к стандартной погрешности. Другими словами, sort -c никогда печать к стандартному выводу. Так как это никогда не печатает, не имеет большого смысла перенаправлять свой вывод.

2
27.01.2020, 21:50

вид-c никогда не производит вывод. Это только проверяет файл. Без вывода нет никакой причины записать это в файл. Так, несовместимый с-o.

Вы могли использовать-c в качестве своего рода проверка на файле прежде, чем отсортировать его, но я не уверен, что это на самом деле убыстрилось бы, вещи как Вы хотят.

2
27.01.2020, 21:50

Существует большая разница в проверке, если файл отсортирован, и отсортируйте его.

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

Если Вы имеете много файлов к виду и, оказывается, часто прерываете, вероятно, необходимо отслеживать в некотором роде сделанные файлы прежде, чем отсортировать снова.

0
27.01.2020, 21:50

Теги

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