Portál AbcLinuxu, 19. července 2025 11:27
static int file_info(const char *fpath, const struct stat *sb, int tflag, struct FTW *ftwbuf) { if (tflag == FTW_D) { //tady bych chtel volat dalsi funkci //fce((struct tree *)first); printf("%s, D(%d), %d\n", fpath, ftwbuf->level, (long long)sb->st_size); } else if (tflag == FTW_F) printf("%s, F(%d), %d\n", fpath,ftwbuf->level, (long long)sb->st_size); return(0); } int main(int argc, char *argv[]) { int flags = 0; //flags |= FTW_DEPTH; //flags |= FTW_PHYS; nftw(argv[1], file_info, 20, 0); exit(EXIT_SUCCESS); }Potrebuji volat z funkce file_info() dalsi funkci, ktere bych predal ukazatel na strukturu (kde budou ulozeny informace o souborech). Jedno reseni je pouzit dlobalni promenne a nebo promene ve funkci kterou chci volat pouzit jako staticke. A nebo posledni reseni nepouzit ftw()/nftw() a napsat si to cele sam. Poradi nekdo?
nftw
vidím poprvé. Asi to ale nedělá nic víc, než bych sám svedl s opendir
/stat
...
V mé manuálové stránce je napsáno These functions are provided for compatibility with legacy code. New code should use the fts(3)
functions.. Co ty na to?
Funkce, kterým se předává nějaký callback, který pak ony volají, obvykle umožňují použít jeden pointer právě na nějaká vlastní data, které tomu callbacku chceme propašovat. Viz např. pthread_create
. U nftw
ale nic takového nevidím, přístup fts
je v tomhle tedy lepší.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.