Пытаясь удалить текущий каталог, используя rmdir

Есть ли в вашей системе устройство / dev / sda ? К какому типу относится переменная driveid? Покажите нам весь код или попробуйте изменить driveid на:

struct hd_driveid driveid;

Затем вы можете распечатать его содержимое, например:

printf("Firmware Revision=%.8s\n",driveid.fw_rev);
printf("Cylinders=%d\n",driveid.cyls);

Также проверьте: http://lxr.free-electrons.com/source/include/linux/hdreg.h?v=2.6 .32

0
19.12.2018, 20:42
1 ответ

Если вы хотите понять , почему это так, вам нужно понять разницу между файлами и индексными дескрипторами. rm, rmdir и mv воздействуют на индексные дескрипторы, описывающие файл/каталог, а не фактический файл. Если у вас есть открытый файл/каталог (, например. находясь в каталоге ), информация об индексе удаляется, но фактический файл данных, связанный с файлом/каталогом, не удаляется до тех пор, пока все дескрипторы файлов, указывающие на него, не будут закрыты. Итак, когда вы «cd..», файловая система может налететь и удалить каталог и все его содержимое.

https://en.wikipedia.org/wiki/Inode

http://www.grymoire.com/Unix/Inodes.html

3
28.01.2020, 02:23

Теги

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