Как вручную создавать файлы устройств с помощью mknod?

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

Также обратите внимание, что если cp должен «заменить» ранее существовавшие файлы назначения, это можно было бы считать неожиданным или неправильным, вероятно, больше, чем «перезапись». Например:

  • Если бы cp сначала удалил старый файл, а затем создал новый, тогда будет промежуток времени, в течение которого файл будет отсутствовать, что было бы удивительно.
  • Если cp сначала создал временный файл, а затем переместил его на место, то ему, вероятно, следовало бы задокументировать это из-за того, что такие временные файлы со странными именами иногда можно было бы заметить ... т.
  • Если cp не смог создать новый файл в том же каталоге, что и старый файл из-за разрешений, то это будет неудачно (особенно если он уже удалил старый).
  • Если файл не принадлежал пользователю, запускающему cp , а пользователь, выполняющий cp , не был root , то было бы невозможно сопоставить владельца и разрешения нового файла на права нового файла.
  • Если файл имеет необычные специальные атрибуты, о которых cp не знает, то они будут потеряны в копии. В настоящее время реализации cp должны надежно понимать такие вещи, как расширенные атрибуты, но так было не всегда. Есть и другие вещи, например, вилки ресурсов MacOS или, для удаленных файловых систем, что угодно.

Итак, в заключение: теперь вы знаете, что на самом деле делает cp . Вы больше никогда этим не удивитесь! Честно говоря, я думаю, что то же самое могло случиться и со мной много лет назад.

4
07.12.2017, 01:01
0 ответов

Теги

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