У меня вопрос по fts(3)
. Я получаю ошибку сегментации всякий раз, когда пытаюсь получить доступ к любым членам функции fts_children()
. Когда я читаю справочную страницу по адресу http://www.kernel.org/doc/man-pages/online/pages/man3/fts.3.html он утверждает, что заполняет себя после запуска функции чтения и возвращает связанный список, связанный через поле link
в структуре . Я подозреваю, что child_function ничего не возвращает, но я чувствую, что это не совпадает с справочной страницей. Должен ли я добавлять эти файлы в дочерний буфер, потому что я думал, что это делается автоматически? Мой код ниже, спасибо!
#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fts.h>
#include<string.h>
int compare (const FTSENT**, const FTSENT**);
int main(int argc, char* const argv[])
{
FTS* file_system = NULL;
FTSENT* child = NULL;
FTSENT* parent = NULL;
FTSENT* temp = NULL;
file_system = fts_open(argv + 1,FTS_COMFOLLOW | FTS_NOCHDIR,&compare);
while( (parent = fts_read(file_system)) != NULL)
{
child = fts_children(file_system,0);
printf("%s\n", child->fts_path);
}
// while (child ->fts_link != NULL)
// child = child->fts_link;
fts_close(file_system);
return 0;
}
int compare(const FTSENT** one, const FTSENT** two){
return (strcmp((*one)->fts_name, (*two)->fts_name));
}
"test_fs.c" 43L, 1108C