LINUX.ORG.RU

Удаление файла


0

1

Добрый день!

Есть ли в природе системный вызов для удаления файла в независимости от количества ссылок на него? Т.е. не просто unlink/remove.

★★

Последнее исправление: placement_new (всего исправлений: 2)
Ответ на: комментарий от anonymous

Ну это как то все шаги на темную сторону, не? Даже интересно почему не сделали такого прямого вызова? А-ля shutdown на сокете есть же, который делает свою работу независимо от кол-ва ссылок на сокет.

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

Ну, например, ссылки делали как раз чтобы этого избежать?

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

Даже интересно почему не сделали такого прямого вызова?

Неюниксвейно. Не нужно.

schizoid ★★★
()
int f()
{
  shared_ptr <SomeClass> t(make_shared <SomeClass> ());
  give_it_there(t);
  and_there(t);
  and_there_too(t);
  
  delete *t; // <- this is exactly what you request but in terms of c++
  
  show_troll_face();
  return;
}
nanoolinux ★★★★
()

1) truncate 2) установить метку: user.xdg... 3) unlink 4) по крону find -type f -size 0 - если есть метка удалять

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

Нет, не тоже самое. Я бы вполне согласился на ошибку чтения-записи после удаления. shutdown же на сокете можно сделать, опять же.

placement_new ★★
() автор топика
Последнее исправление: placement_new (всего исправлений: 1)
Ответ на: комментарий от anonymous

find -samefile name

Каждый раз при операции?

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

find -inum $INODE

Мало ли сколько фс подцеплено, если отложенно проверять - нужно будет для каждой фс составлять список «обработанных» инодов. Не ахти. Или есть альтернативы?

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

Открой debugfs, там есть команда set_inode_field. Попробуй с ее помощью установить параметр link_count=0 для нужного inode.

Но я не представляю, что может побудить здравомыслящего человека так делать. Хочешь нормально удалить все файлы - используй поиск по inode.

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