В программной инженерии и информатике затирание файла , регистра процессора или области памяти компьютера — это процесс полной перезаписи его содержимого, намеренно или ненамеренно, или для указания того, что такое действие, скорее всего, произойдет. [ 1] Файл жаргона определяет затирание как
Переписывать, обычно непреднамеренно: «Я отошел от конца массива и затер стек ». Сравните mung , scribble , trash и smash the stack . [2]
Перезапись памяти или файлов в системах POSIX , а также в оболочках, таких как Bash , часто происходит непреднамеренно, например, при использовании >
оператора перенаправления . Поэтому для предотвращения непреднамеренного затирания можно использовать различные средства, например, установка параметра оболочки set -o noclobber
( bash , ksh ) или set noclobber
( csh , tcsh ) предотвратит >
затирание, заставив его вместо этого выдать сообщение об ошибке : [3]
$ echo "Привет, мир" >file.txt $ cat file.txt Привет, мир $ echo "Это перезапишет первое приветствие." >file.txt $ cat file.txt Это перезапишет первое приветствие. $ set -o noclobber $ echo "Можем ли мы перезаписать его снова?" >file.txt -bash: file.txt: невозможно перезаписать существующий файл $ echo "Но мы можем использовать оператор >|, чтобы игнорировать noclobber." > | file.txt $ cat file.txt # Успешно перезаписал содержимое file.txt с помощью оператора >| Но мы можем использовать оператор >|, чтобы игнорировать noclobber. $ set +o noclobber # Изменяет настройки обратно
Поведение команд mv и cp по умолчанию — затирать файл назначения, если он уже существует. Это поведение можно переопределить, вызвав или создав псевдонимы команд с помощью -i
switch , заставив команды запрашивать пользователя перед перезаписью файла назначения или -n
не передавать исходные файлы с конфликтом имен.
В makefiles , общая цель clobber означает полную очистку всех ненужных файлов и каталогов, созданных предыдущими вызовами команды make
. [ 4] Это более серьезная цель, чем clean , и обычно используется для удаления программного обеспечения. Некоторые команды, связанные с make, вызывают "make clobber" во время своего выполнения. Они проверяют переменную окружения CLOBBER . Если она установлена в OFF, то clobber не выполняется. [5]
В программировании на ассемблере , включая встроенный расширенный ассемблер [6] , поддерживаемый в C и C++ через GCC , термин «затираемые регистры» часто используется для обозначения любых регистров , значение которых может быть перезаписано в ходе выполнения инструкции или инструкций.
"clobbering" используется в вычислительной технике несколькими способами, и его значение обычно ясно из контекста. В одном смысле он относится к перезаписи существующих файлов или записей памяти. Его также можно использовать для обсуждения перегрузки компьютеров, таких как серверы, запросами, что приводит к снижению производительности. Это второе использование слова отражает общее использование "clobber" как слова для описания получения удара.