The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Удаление файла имея только его дескриптор"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Удаление файла имея только его дескриптор"  
Сообщение от apr2504 email(ok) on 18-Авг-06, 11:46 
Кто нибудь знает как осуществить сабж?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Удаление файла имея только его дескриптор"  
Сообщение от int_0d email on 18-Авг-06, 12:15 
>Кто нибудь знает как осуществить сабж?


man unlink?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Удаление файла имея только его дескриптор"  
Сообщение от apr2504 email(ok) on 18-Авг-06, 13:27 
>man unlink?

#include <unistd.h>

int unlink(const char *pathname);

У меня есть только открытый дескриптор файла!!!


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Удаление файла имея только его дескриптор"  
Сообщение от int_0d email on 18-Авг-06, 13:37 
>>man unlink?
>
>#include <unistd.h>
>
> int unlink(const char *pathname);
>
>У меня есть только открытый дескриптор файла!!!
сорри, ступил.
из userspace я способов не вижу : (
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Удаление файла имея только его дескриптор"  
Сообщение от EL (??) on 18-Авг-06, 15:47 
>сорри, ступил.
>из userspace я способов не вижу : (
А что-то типа "find -inum XXX -exec rm -f {}"

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Удаление файла имея только его дескриптор"  
Сообщение от BsDr (??) on 18-Авг-06, 16:27 
1. Я не знаю получится или нет, ну вообщем вот! если есть дискриптор то можно попробовать так: man fstat, функция запишет структуру(struct stat *buf) может в ней и будет путь и имя файла, просто для меня не понятны названия этих полей! Затем unlink()!

2. Можно вначале открыть файл fopen(), в структуре  FILE есть поле в котором содержится путь файла! Затем unlink()!

Второй вариант точно будет работать!

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "Удаление файла имея только его дескриптор"  
Сообщение от Forth (??) on 18-Авг-06, 16:34 
>1. Я не знаю получится или нет, ну вообщем вот! если есть
>дискриптор то можно попробовать так: man fstat, функция запишет структуру(struct stat
>*buf) может в ней и будет путь и имя файла, просто
>для меня не понятны названия этих полей! Затем unlink()!
>
>2. Можно вначале открыть файл fopen(), в структуре  FILE есть поле
>в котором содержится путь файла! Затем unlink()!
>
>Второй вариант точно будет работать!
1. Там много чего есть, а вот пути как раз и нету.
2. А где в FILE путь? Я там такого поля не вижу.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "Удаление файла имея только его дескриптор"  
Сообщение от apr2504 (ok) on 18-Авг-06, 17:02 
>1. Я не знаю получится или нет, ну вообщем вот! если есть
>дискриптор то можно попробовать так: man fstat, функция запишет структуру(struct stat
>*buf) может в ней и будет путь и имя файла, просто
>для меня не понятны названия этих полей! Затем unlink()!
>
>2. Можно вначале открыть файл fopen(), в структуре  FILE есть поле
>в котором содержится путь файла! Затем unlink()!
>
>Второй вариант точно будет работать!

Собственно проблема-то возникла из-за того, что программа
открывает файл, потом делает chroot до конца работы. А файл-то
она удалить уже не сможет! Я вот думал может получить дескриптор
каталога командой opendir(), но там в структуре удалить не
удастся файл.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "Удаление файла имея только его дескриптор"  
Сообщение от Forth (??) on 18-Авг-06, 17:06 
>Собственно проблема-то возникла из-за того, что программа
>открывает файл, потом делает chroot до конца работы. А файл-то
>она удалить уже не сможет! Я вот думал может получить дескриптор
>каталога командой opendir(), но там в структуре удалить не
>удастся файл.
Надо файл держать внутри chroot.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "Удаление файла имея только его дескриптор"  
Сообщение от Ganduras on 06-Окт-06, 11:53 
>Собственно проблема-то возникла из-за того, что программа
>открывает файл, потом делает chroot до конца работы. А файл-то
>она удалить уже не сможет! Я вот думал может получить дескриптор
>каталога командой opendir(), но там в структуре удалить не
>удастся файл.

В unix после удаления файла в ФС уже открытый дескриптор существует как ни в чем не бывало. Так что можно поменять местами, удалить файл сразу после его открытия. После того, как процесс будет завершен, он автоматически будет удален.

Если нужно удалить имя файла из ФС, когда это запросит процесс в chroot, можно до перехода его в chroot создать параллельный процесс, и ожидать этой команды через IPC - pipe, socketpair, mmap, shm*, sem* даже через flock с LOCK_EX на том самом дескрипторе.

Но в любом случае для удаления необходимо знать имя файла. Один физический файл может иметь несколько жестких ссылок в разных дирректориях.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру