Почему rmdir (системный вызов )работает только с пустым каталогом?

Отключите параметр «Ускорение 3D-графики» в настройках виртуальной машины. Чтобы отключить эту опцию, виртуальная машина должна быть выключена.

1
10.12.2020, 18:49
2 ответа

Это фича, а не баг!

Можно легко удалить пустые каталоги с помощью rmdir *, оставив только непустые -каталоги. Это практика системного управления, которую я часто использую.

Существует rm -rfудаление целых деревьев каталогов (всех файлов и подкаталогов ).

-1
18.03.2021, 22:44
int rmdir(const char *pathname);

— это системный вызов , соответствующий стандарту POSIX.1 -2001. Теперь представьте ситуацию, когда вы хотите, чтобы этот системный вызов удалял не один каталог, а все подкаталоги и файлы в нем.

  1. Вам придется добавить эту логику в ядро, что не так просто, и тем самым вы раздуете ядро ​​
  2. Операция становится недетерминированной -с точки зрения времени выполнения
  3. Существуют десятки способов обработки ошибок, которые в ядре не имеют особого смысла.
1
18.03.2021, 22:44

Теги

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