И не тут-то было! Пишу:
bool FITS_rewrite(FITS *fits){ FNAME(); char *nm = tmpnam(NULL); if(!nm){WARN("tmpnam()"); return FALSE;} char *fnm = strrchr(nm, '/'); if(!fnm){WARN("tmpnam()"); return FALSE;} ++fnm; DBG("make double: %s -> %s", fits->filename, fnm); if(link(fits->filename, fnm)){ WARN("link()"); return FALSE; } return TRUE; }
(все остальное допишу дальше, сначала хочу проверить работу link), и у меня создается символическая ссылка вместо жесткой!
Вот же ядрен батон!!! Как это?
UPD: точно лыжи не едут, спать надо ложиться! Я пытался сделать линк на симлинк! Понятно, что появляется новый симлинк. Все ОК. Надо лечиться.
А потом уже разбираться, как мне сделать аналог команды linkat без дескрипторов...
Upd2. А ведь с перезаписью содержимого файла, открытого по симлинку, не все так просто. Буду искать варианты. Как-то я раньше никогда этим не заморачивался...
Journal information