int filedes? системные вызовы чтение и запись

Кто-нибудь из вас, ребята, может сказать мне, что означает "int filedes"? http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html

Я заметил, что могу вставить туда любой int, и он, кажется, работает, но я не знаю, для чего он...

Благодарю.

3 ответа

Решение

Это дескриптор файла. Смотрите http://en.wikipedia.org/wiki/File_descriptor. Поскольку он представляет собой смещение в таблице поиска файлов и каналов, может быть несколько дескрипторов, которые могут возвращать действительные данные. 0=stdin и 2=stderr будут существовать по умолчанию, или вы можете посмотреть на функцию open, чтобы создать свою собственную.

Самое первое предложение описания гласит: "файл, связанный с дескриптором открытого файла, fildesMsgstr "Другими словами, это указывает на файл, с которого вы читаете. read вызов функции работает независимо от того, какой дескриптор файла вы передаете, ваша программа не делает то, о чем вы думаете.

Где-то внутри ядра есть таблица, содержащая записи файловых дескрипторов для каждого процесса. Дескриптор файла - это структура, которая описывает состояние файла. Какую информацию имеет файловый дескриптор? Прежде всего, позиция, из которой может быть выполнена следующая операция чтения / записи. Затем режим доступа к файлу, указанный системным вызовом open. И, наконец, что не менее важно, структура данных, которая представляет информацию файла на диске. В *nix это структура inode. Здесь основной вопрос, на который нужно ответить: где находятся блоки файла на диске. Если у вас есть inode файла в памяти, вы можете быстро найти, где находится N-й блок файла (что означает, что вам не нужно каждый раз анализировать путь и сканировать каждый каталог в пути, чтобы найти инод).

Другие вопросы по тегам