LINUX.ORG.RU
FILE *p; ...

int fd = fileno(p); char fd_str[16]; char link[MAXPATHLEN]; char path[MAXPATHLEN]; strcpy(link, "/proc/self/fd/"); sprintf(fd_str, "%d", fd); strcat(link, fd_str); realpath(link, path); unlink(path);

Наверное, есть менее извращенный способ.

Motl
()
Ответ на: комментарий от Motl
Вот с нормальной табуляцией

FILE *p;

...

int fd = fileno(p);

char fd_str[16];

char link[MAXPATHLEN];

char path[MAXPATHLEN];

strcpy(link, "/proc/self/fd/");

sprintf(fd_str, "%d", fd); strcat(link, fd_str); realpath(link, path);

unlink(path);

Motl
()
Ответ на: комментарий от anonymous
По идее, то, на что ссылается FILE* вообще не обязано быть файлом, а может оказаться сокетом, или pipe-ом неименованным.
anonymous
()
Ответ на: комментарий от anonymous
Если это файл , то как его удалить?
anonymous
()
Ответ на: комментарий от anonymous
> А более кросплатформенного варианта нет?

О какой кросплатформенности идёт речь?

В POSIX это работает, а в Windows открытый без флага FILE_SHARE_DELETE файл ты не удалишь (fopen открывает без него).

execve
()
Ответ на: комментарий от execve
> В POSIX это работает

procfs не есть часть POSIX стандарта.

# ls -l /proc/self ls: /proc/self: No such file or directory

# uname -a Darwin hostname.local 8.8.0 Darwin Kernel Version 8.8.0: Fri Sep 8 17:18:57 PDT 2006; root:xnu-792.12.6.obj~1/RELEASE_PPC Power Macintosh powerpc

anonymous
()
Ответ на: комментарий от execve
Если быть точным, там даже /proc не подмонтирован, хотя сама procfs вроде как поддерживается где-то в дарвине.
anonymous
()
Ответ на: комментарий от Motl
> Вот с нормальной табуляцией
> FILE *p;
> ...

это решение подвержено суровым рейсам и даже в пределах Linux может не работать.

// wbr
klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda
Так ясен день, что не переносимо и что в POSIX нет - кто ж спорит. Человек спросил __возможнный_вариант__ - я предложил.
Motl
()
Ответ на: комментарий от Motl
вспомнилось:)

- поручик, как вы знакомитесь с дамами?
- подхожу и спрашиваю "разрешите вам впендюрить"
- но ведь можно и пощечину получить!
- да, но можно и впендюрить
dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.