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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.