LINUX.ORG.RU
Ответ на: комментарий от ananas

А у меня почему то не удаляется. файл создается один без всяких ссылок. Нашел в инете фразу:" Ты можешь только удалить ссылку на него (unlink, man 2 unlink), а файл удалит уже операционка тогда, когда заметит, что больше он никому не нужен." Вопрос: и когда же она его заметит?

anonymous
()
Ответ на: комментарий от anonymous

(pts/5)~/tmp/ttt $> cat test.c
#include <unistd.h>

int main (int argc, char *argv[])
{
  return unlink (argv[1]);  
}
(pts/5)~/tmp/ttt $> gcc -o t test.c
(pts/5)~/tmp/ttt $> touch ttt
(pts/5)~/tmp/ttt $> ls
t  test.c  ttt
(pts/5)~/tmp/ttt $> ./t ttt
(pts/5)~/tmp/ttt $> ls
t  test.c
(pts/5)~/tmp/ttt $> 

ananas ★★★★★
()
Ответ на: комментарий от anonymous

Надо читать работу ядра с файлововй системой.

Линукс это многопользовательская система. Тоесть одним файлом могут пользоваться множество пользователей в том числе и системные программы. Значит пока этот файл открыт кем(чем) либо система не будет его удалять. При команде ls файла видно не будет но дескриптор файла не будет стерт пока файл не будет закрыт. Тоесть файл по прежнему будет занимать место в системе.

PS: читай по теме баги у начинающих линуксоидов при очистке логов.

Aleks_IZA
()

unlink удаляет dentry и уменьшает на единицу счетчик (link count) inode.

есть еще концепция incore inode..(т.е. inode в памяти) у нее тоже есть счетчик

окончательно inode будет удалена когда оба счетчика станут по нулям.

P.S. это в самом общем случае ...

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.