Я пытаюсь решить упражнение из K & R; это касается чтения каталогов. Эта задача зависит от системы, поскольку она использует системные вызовы. В книге примеров авторы говорят, что их пример написан для версии 7 и систем System V UNIX и что они использовали информацию каталога в заголовке < SYS/dir.h>, который выглядит следующим образом:Чтение каталога
#ifndef DIRSIZ
#define DIRSIZ 14
#endif
struct direct { /* directory entry */
ino_t d_ino; /* inode number */
char d_name[DIRSIZ]; /* long name does not have '\0' */
};
На эта система использует «struct direct» в сочетании с функцией «read» для извлечения записи в каталоге, которая состоит из имени файла и номера inode.
.....
struct direct dirbuf; /* local directory structure */
while(read(dp->fd, (char *) &dirbuf, sizeof(dirbuf)
== sizeof(dirbuf) {
.....
}
.....
Я предполагаю, что это прекрасно работает на системах UNIX и Linux, но то, что я хочу сделать, это изменить это, так что работает на Windows XP.
Есть ли какая-либо структура в Windows, например, «struct direct», поэтому я могу использовать ее с функцией «read» и если есть имя заголовка, где определено значение ?
Или, может быть, Windows требует совершенно другого подхода?
Или использовать Cygwin/MinGW. – pajton
Как-то я не думаю, что создание приложения Windows, зависящего от библиотеки Unix Emulation, является хорошим выбором дизайна для нового кода. Кроме того, MinGW не делает ничего, чтобы решить эту проблему. Вы не можете открывать файлы каталога с помощью MinGW. Cygwin может поддерживать некоторые подобные вещи, но MinGW этого не делает. –
Хорошо, но Палман заявил в вопросе, что он решает упражнения из K & R. Поэтому я думаю, что Cygwin для этого очень разумный выбор. Я согласен с вами в том, что использование Cygwin для создания производственного приложения не будет такой полезной идеей. – pajton